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.

Woher ich das weiß:Berufserfahrung – IT-Koordinator / SysAdmin

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

Woher ich das weiß:Studium / Ausbildung

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.

Woher ich das weiß:eigene Erfahrung – Ich habe selber lange im PC gearbeitet

irezed 
Beitragsersteller
 11.05.2020, 12:54

Vielen Dank euch

0
irezed 
Beitragsersteller
 11.05.2020, 12:52

Warum schreibt man dann nicht einfach nochmal nur "if" statt if else ?

0
ohwehohach  11.05.2020, 12:54
@irezed

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");
}
1
ZaoDaDong  11.05.2020, 12:54
@irezed

Weil, wenn der erste Fall zutrifft, die folgende Abfrage im Programmablauf noch ausgeführt wird. Bei else kommt der Teil im Else eben dann nicht mehr zur Ausführung.

1