Was ist der Unterschied zwischen " if - else" und " if -else if" (Java , Eclipse)?
5 Antworten
Einfaches Beispiel aus der Realität:
Du willst zB Altersgruppen kategorisieren. Nehemen wir beispielsweise
- Kind (bis 12 Jahre)
- Jugendlicher (ab 13 Jahre bis 17 Jahre)
- Erwachsener (ab 18 Jahre)
Dann fragt man "Wenn Alter kleiner als 13 Jahre", oder [else] "Alter zwischen 13-17 Jahre", oder "Alter größer als 18 Jahre".
Im Code also
int alter = 0;
String altersklasse;
if (alter < 13) {
altersklasse = "Kind";
else if (alter > 17) {
altersklasse = "Erwachsener";
}
else {
altersklasse = "Jugendlicher"
// Wenn alter weder kleiner als 13, noch größer als 17 ist
}
Je nachdem, was für einen Wert man für "alter" einsetzt, wird die entsprechende Altersklasse gesetzt.
Moin,
das kann man sich durch die Übersetzung ganz gut vor Augen halten:
if x then z - wenn x dann z
else a - andernfalls a
---
if x then z - wenn x dann z
else if y - andernfalls wenn y dann a
---
Das eine wird ausgeführt, wenn der erste Fall nicht zutrifft.
Im zweiten Fall wird der "else" Pfad ebenfalls angegangen, wenn der erste Fall nicht zutrifft, jedoch nur weitergeführt, wenn eine weitere Bedingung (y) zutrifft.
Mit freundlichen Grüßen Souta
Der Unterschied ist, dass Du für den else-Zweig noch eine Bedingung angibst. Das kann manchmal sinnvoll sein. Beispiel:
if (x < 5)
{
System.out.println("x ist kleiner 5");
}
else if (x < 10)
{
System.out.println("x ist kleiner 10, aber größer oder gleich 5");
}
else
{
System.out.println("x ist größer oder gleich 10");
}
Ansonsten müsstest Du schreiben:
if (x < 5)
{
System.out.println("x ist kleiner 5");
}
else
{
if (x < 10)
{
System.out.println("x ist kleiner 10, aber größer oder gleich 5");
}
else
{
System.out.println("x ist größer oder gleich 10");
}
}
Das ist zwar technisch möglich (und vermutlich vom compilierten Ergebnis her sogar äquivalent), aber schwerer lesbar.
der „else“ Bereich wird ausgeführt, wenn die Bedingung in der if-Abfrage nicht zutrifft. In der „else if“ kannst du dann eine 2. Bedingung anfügen.
Beispiel:
if(i == 1) {
//wird ausgeführt, wenn i = 1 ist
} else {
//wird ausgeführt, wenn i ungleich 1 ist
}
if(i == 1) {
//wird ausgeführt, wenn i = 1 ist
} else if(i == 2) {
//wird ausgeführt, wenn i = 2 ist
} else {
//wird ausgeführt, wenn I weder 1 noch 2 ist
}
"if - else - if" ist einfach nur ein if-else mit einer anschließenden weiteren IF-Verschachtelung.
Alternativ kann man auch ein Case switch nutzen, wenn es viele derartige Verschachtelungen hintereinander werden.
Weil gegebenenfalls das zweite if überhaupt nur ausgeführt werden soll, wenn das erste nicht gegriffen hat. Überlege, was diese Code ausgibt:
if (x < 5)
{
System.out.println("x ist kleiner 5");
}
if (x < 10)
{
System.out.println("x ist kleiner 10");
}
Warum schreibt man dann nicht einfach nochmal nur "if" statt if else ?