Początki z java, kilka problemów.

0

Witam ;) Dopiero zaczynam swoją przygodę z programowaniem w Java, lecz jak to zwykle bywa mam kilka braków, które nie pozwalają mi napisać choćby prostego programu, który miałby działać tak jak ja to sobie wyobrażam :)
Mianowicie tym razem zabrałem się za taki malutki kod (Wkleje cały, ponieważ jest króciutki).

Homework.java

 import java.util.*;

public class Homework {

  public static void main(String[] args){
   
    Ulamek rhcp = new Ulamek(5, 99);
    rhcp.wynosi();


}

}

Ulamek.java

public class Ulamek {
	public static int a;
	public static int b;



	public Ulamek(int startowaA, int startowaB) {
	startowaA = a;
	startowaB = b;
    System.out.println("Stworzono ulamek: " + a + "/" + b);
    return a;
    return b;

}

    public static int wynosi() {

    int wynik = this.a / this.b;
    System.out.println("Ulamek " + a + "/" + b + "wynosi: " + wynik);


  }
} 

Błędy, które zwraca kompilator:

1. cannot return a value from method whose result type is void (return a;)
2. cannot return a value from method whose result type is void (return b;)
3. non static variable cannot be referenced from static context ( int wynik = this.a / this.b; )
4. non static variable cannot be referenced from static context ( int wynik = this.a / this.b; )

Otóż jest to któreś z kolei moje podejście do napisania czegoś prostego, co tylko sprawiło bym przyswoił sobie pewne zasady programowania w javie, lecz po raz kolejny zacinam się na zmiennych. Problem jak widać polega na tym, iż chcę wykorzystywać zmienne utworzone na rzecz jednej klasy ( class Ulamek ) w drugiej ( public static int wynosi() ).
Zazwyczaj nie tworzę nowych tematów z problemami, które mnie gnębią lecz chciałbym by ktoś pokazał mi gdzie leży błąd/y ;)

Pozdrawiam oraz z góry dziękuję za odpowiedzi.

0

mały update do Ulamek.java

public class Ulamek {
	public static int a;
	public static int b;

	public Ulamek(int startowaA, int startowaB) {
	startowaA = a;
	startowaB = b;
    System.out.println("Stworzono ulamek: " + a + "/" + b);
    

}

    public static int wynosi() {

    int wynik = Ulamek.a / Ulamek.b;
    System.out.println("Ulamek " + a + "/" + b + "wynosi: " + wynik);

   return wynik;
  }
} 

Teraz błąd wygląda tak:

Excetion in thread "main" java.lang.ArithmeticException: / by zero
at Ulamek.wynosi
at Homework.main

Jak widać nadal zmienne a i b nie są współdzielone, przez co program krzyczy, że nie będzie dzielił przez zero :(

0

Co to jest?

startowaA = a;
startowaB = b;

Powinno być dokładnie odwrotnie.

a = startowaA;
b = startowaB;

Pola a i b w klasie Ulamek nie powinny być statyczne. Przy polach statycznych nie ma możliwości by istniały dwa różne ułamki.
Przeczytaj też może jakiś podręcznik, bo używasz własnych tajemniczych zwrotów:

zmienne a i b nie są współdzielone

chcę wykorzystywać zmienne utworzone na rzecz jednej klasy ( class Ulamek ) w drugiej ( public static int wynosi() )

0

Dzięki Bogdanie za pomoc, wygląda na to że po zmianach które zasugerowałeś wszystko gra i trąbi. Co do podręcznika to zakupiłem sobie Thinking in Java oraz jestem na 90stronie, gdzie autor zaleca wypróbowanie Javy "w boju" i sprawdzenie się w kilku teoretycznie prostych zadaniach ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1