Witam ponownie. Tym razem napisałem program, ale nie działa. potrzebuję informacji co zrobiłem nie tak.
Zadanie ma zawierać obsługę wyjątków.
Chodzi o zrobienie rakiety z polami nazwa oraz waga paliwa.
w klasie Rakieta mają być dwie metody zatankuj() oraz start();
Jeżeli będzie za mało paliwa to ma zostać podniesiony wyjątek.
Zadanie wydaje sie proste, przerabialiśmy je na zajęciach, a jednak teraz kiedy próbuje zrobić je od zera po mojemu nie działa jak należy.
Stworzyłem klasę RakietaTest (oczywiście wcześniej utworzyłem klasę Rakieta oraz klasę ZaMałoPaliwaException dziedziczącą po Exception.
W kodzie umieściłem metodę zatankuj () w pętli do while....
Wydawało mi sie że Rakieta będzie się tankowała dopóki nie zostanie spełniony warunek CzyZatankowana. a później kompilator przejdzie do metody start() i wszystko zadziała. Niestety po komunikacie za mało paliwa program kończy działanie. gdzie jest problem?
public class Rakieta {
String nazwa;
int wagaPaliwa;
Rakieta(String nazwa, int wagaPaliwa){
this.nazwa= nazwa;
this.wagaPaliwa = wagaPaliwa;
}
public void zatankuj(){
Random r = new Random();
wagaPaliwa += r.nextInt(200);
System.out.println("Waga zatankowanego paliwa " + wagaPaliwa);
}
public void start() throws ZaMaloPaliwaException{
if(wagaPaliwa<1000) throw new ZaMaloPaliwaException();
System.out.println("Start rakiety za 3,2,1.......");
}
}
Klasa RakietaTest
public class RakietaTest {
public static void main(String[] args) {
Rakieta r1 = new Rakieta ("Stinger", 500);
boolean CzyZatankowana = false;
do {
r1.zatankuj();
if(r1.wagaPaliwa>=1000) {CzyZatankowana = true;}
} while (CzyZatankowana = false);
try {
r1.start();
} catch (ZaMaloPaliwaException e) {
System.out.println(e);
}
}
}