Piszę prosty kalkulator z GUI i zastanawiam się jak zastąpić wszystkie ify. Myślicie, że instrukcja switch będzie bardziej efektywna?
Najpierw pokaż ten kod - łatwiej będzie coś podpowiedzieć.
W zasadzie to nie ma co za bardzo pokazywać, pytam wybiegając w przyszłość. Dzisiaj zacząłem poznawać świat GUI. Na ten moment mam okienko z potęgowaniem. http://pastebin.com/gbeBcjDh
Jeśli dojdą do tego inne działania to przy nasluchiwaniu źródła dojdzie sporo innych ifów.
Ja tam drabinki nie widzę, natomiast ten kod:
if(!odwroc.isSelected()) {
wynikLiczb = (long) Math.pow(liczba1, liczba2);
wynik.setText(liczba1 + " do potegi " + liczba2 + " jest rowne: " + wynikLiczb);
}
else if(odwroc.isSelected()){
wynikLiczb = (int) Math.pow(liczba2, liczba1);
wynik.setText(liczba2 + " do potegi " + liczba1 + " jest rowne: " + wynikLiczb);
}
nie musi posiadać po else
drugiego if
, bo stan jest już znany:
if(odwroc.isSelected()) {
wynikLiczb = (int) Math.pow(liczba2, liczba1);
wynik.setText(liczba2 + " do potegi " + liczba1 + " jest rowne: " + wynikLiczb);
}
else {
wynikLiczb = (long) Math.pow(liczba1, liczba2);
wynik.setText(liczba1 + " do potegi " + liczba2 + " jest rowne: " + wynikLiczb);
}
Jeśli możesz zastąpić warunek if(source == poteguj)
instrukcją wyboru to to zrób, bo przy dodaniu kolejnych operacji wyjdzie drabinka; A samą opcję odwróć
możesz zaimplementować bez dodatkowego warunku - po prostu zrób swapa na liczba1
i liczba2
.
Ja napisałbym to inaczej, bo nie ma nic gorszego niż powielona logika:
if(odwroc.isSelected()) {
long tmp=liczba2;
liczba2=liczba1;
liczba1=tmp;
}
wynikLiczb = (long) Math.pow(liczba1, liczba2);
wynik.setText(liczba1 + " do potegi " + liczba2 + " jest rowne: " + wynikLiczb);