Ez a java kód hibás vagy én vagyok eltévedve? Ha egy if true akkor utánna az elseifet meg sem vizsgálja?
public class ExampleVoid {
public static void main(String[] args) {
methodRankPoints(255.7);
}
public static void methodRankPoints(double points) {
if (points >= 202.5) {
System.out.println("Rank:A1");
}
else if (points >= 122.4) {
System.out.println("Rank:A2");
}
else {
System.out.println("Rank:A3");
}
}
}
ennek az értéke elvileg:
Rank:A1
de az első if után mind a kettő ugyanúgy igaz akkor nem
Rank:A1
Rank:A2
Rank:A3
lenne az eredmény?
if (points >= 202.5)
{
__System.out.println("Rank:A1");
}
else
{
__if (points >= 122.4)
__{
____System.out.println("Rank:A2");
__}
__else
__{
____System.out.println("Rank:A3");
__}
}
remélem így érthetőbb.
Ez ugyanazt jelenti, mint amit te is írtál, csak itt "egyértelműbb" a 2. if feltételei
ui.: az _ csak a tagolás miatt van.
Azért nem vizsgálja meg, mert ez a három ág logikai kapcsolatban van. De nézzük meg, mit is jelent, amit leírtál: Ha az érték nagyobb, mint x, akkor valami, amúgy ha az érték nagyobb mint y ( de kisebb mint x), akkor valami más, és ha az érték kisebb, mint y ( és x), akkor a harmadik.
A te verziód akkor futna le, ha három if-be írnád amit akarsz, mert azokat egymástól függetlenül megvizsgálja.
#2
a kérdező logikája jó, ugyanis
1. if a 202.5 nél nagyobbakra van
2. if a 122.4 nél nagyobbakra van , de az 1. if miatt csak 202.5 nél kisebb számok jutnak el eddig
2. if else ága a maradék 122.4 nél kisebbekre van
tehát az egész intervallum le van fedve
de szerintem akkor is az elseif az true.
az első if-et megvizsgálja true utánna akkor mivel true ezért az elseif-et meg sem vizsgálja? végülis érthető hiszen ugyanaz mint az utolsó else ág szóval akkor vizsgálja megl az elseifet ha előtte minden if false volt és az else if értéke meg true?
Szerintem nézd át a feltételes elágazások témakört még egyszer :D
if(feltétel){
//Utasítás sorozat
} else if(másik_feltétel){
//Utasítás sorozat
} else{
//Utasítás sorozat
}
//*
Az egész logikája, hogy amikor a vezérlés eléri ez első if részt, megvizsgálja a feltétel, és kiértékeli annak logikai eredményét. Ha IGAZ a zárójelen belüli rész (feltétel), akkor belép az első blokkba, ha nem IGAZ, tehát HAMIS, akkor a vezérlés továbblép. DE, és ez fontos, ha egyszer végrehajtottál egy blokkot, akkor a vezérlés megkeresi az if, else if, else elágazás sorozat végét, és oda ugrik. Vagyis a *-al jelölt részhez. Ha hamis, akkor továbbugrik, és, ha else if a következő blokk akkor kiértékeli annak feltételét (másik_feltétel), ha else, akkor végrehajtja azt (else akkor hajtódik végre, ha egyik blokk feltétele sem volt IGAZ). Mint azt már fentebb írták, az else if, ekvivalens a következővel (a _ az indentálást hivatott jelölni):
if(feltétel){
//Utasítás sorozat
} else {
__if(másik_feltétel){
____//Utasítás sorozat
__} else{
____//Utasítás sorozat
__}
}
Magyarul szerintem teljesen egyértelmű:
Ha, egyébként ha, egyébként.
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!