Dziwne działanie bloku instrukcji if else.

0

Mam problem z teoretycznie prostym przykładem. Program nie wykonuje obliczeń w niektórych blokach else if.

 
public class Test {
public static void main(String[] args){
for(double i=1;i<120;i=i+0.1){
Aproksymacja900 aa =new Aproksymacja900(i);
double bb=aa.aproksymacja900();
System.out.println("zasieg= "+i);
System.out.println("aa= "+bb);
}
}

}


public class Aproksymacja900 {
public Aproksymacja900(double zas){
zasieg=zas;
}
public double aproksymacja900(){
if(zasieg>=1 && zasieg<=2){
aa=20+((zasieg-1)*3.5);
}
else if(zasieg>2 && zasieg<=3){
aa=23.5+((zasieg-2)*1.5);
}
else if(zasieg>3 && zasieg<=5){
aa=25+(zasieg-3);
}
else if(zasieg>5 && zasieg<=10){
aa=27+((zasieg-5)*(3/5));
}
else if(zasieg>10 && zasieg<=20){
aa=30+((zasieg-10)*(2.5/10));
}
else if(zasieg>20 && zasieg<=30){
aa=32.5+((zasieg-20)*(4/10));
}
else if(zasieg>30 && zasieg<=40){
aa=36.5+((zasieg-30)*(4.5/10));
}
else if(zasieg>40 && zasieg<=50){
aa=41+((zasieg-40)*(4.5/10));
}
else if(zasieg>50 && zasieg<=60){
aa=45.5+((zasieg-50)*(4.5/10));
}
else if(zasieg>60 && zasieg<=70){
aa=50+((zasieg-60)*(3.5/10));
}
else if(zasieg>70 && zasieg<=80){
aa=53.5+((zasieg-70)*(2.5/10));
}
else if(zasieg>80 && zasieg<=90){
aa=56+((zasieg-80)*(2.25/10));
}
else if(zasieg>90 && zasieg<=100){
aa=58.25+((zasieg-90)*(2/10));
}
else {
aa=-1;
}
return aa;
}
private double zasieg;
public double aa=0;
}

Np. w bloku else if(zasieg>5 && zasieg<=10) zwraca cały czas wartość 27.

2

Dam Ci małą podpowiedź byś sam na to wpadł, bo jak sam na to wpadniesz to dłużej zapamiętasz co zrobiłeś źle.
Problem występuje dla ifa z 27, 32.5, i z 58.25. Zastanów się dlaczego, tam może się nic nie dodawać. Jeśli nie masz pojęcia. Spróbuj sobie w IDE postawić breakpointa w ifie i zobacz co tam się dzieje, ew powstawiaj sobie tam prinfy i zobacz co konkretnie za wyniki dostajesz, a potem zastanów się czym się te elsy różnią od innych :)

1

Dam trochę większą podpowiedź. Czy 257/1345 == 257.0/1345?
Wstawiaj kod w znaczniki < code=java> < /code> (bez spacji). Tym razem Cię wyręczyłem.

0

Fakt... Całkowicie o tym zapomniałem. Dzięki wielkie.

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