# Java Aufgabe



## ellegance (23. Jul 2014)

Hallo,
habe wieder eine Aufgabe mit Lösung, wo ich aber denke dass teil a) doch eigentlich falsch sein muss :S

Aufgabe:

Betrachten Sie den folgenden Java-Code genau:

class TestCircuit {
  public static void main(String args[]) {
    int t = 0;

    if ((t != 0) && ((27 / t) < 3)) {

        System.out.println("Der Wert von t ist nicht 0.");
    }
    else {
         System.out.println("Der Wert von t ist 0.");
    }
  }
}

a)Wie lautet die Ausgabe dieses Programms? Laden Sie sich dazu den Sourcecode von TestCircuit.java herunter. Kompilieren Sie den Source Code und führen Sie das Programm aus! Schreiben Sie das Ergebnis in das Freitextfeld!

b) Betrachten Sie die nun die if-Anweisung genau:

if ((t!=0) && ((27/t)<3))

Die Berechnung von 27 / t müsste doch eigentlich einen Fehler während der Ausführung zur Folge haben, denn t=0 (27 / 0 => nicht definiert) !!!?? Warum wird die if-Abfrage dennoch korrekt ausgeführt!? Schreiben Sie die Antwort ebenfalls in das Freitextfeld.


Lösung:

a) Der Wert von t ist nicht 0

b) UND Operation &&:
0 && 0 => 0
0 && 1 => 0
1 && 0 => 0
1 && 1 => 1

Der Gesamtausdruck kann nur wahr sein, wenn beide Operanden den Wert true (oder 1) haben. Diesen Sachverhalt macht sich der && Operator zu Nutze. Liefert hier der erste Operand den Wert false, so kann das Ergebnis nur nochfalse sein. Deswegen wird der zweite Operand gar nicht erst ausgewertet, was zu einer besseren Performance führen kann.

Meine Frage:

Wieso steht bei a) laut Musterlösung Der Wert von t ist nicht 0.
Obwohl t=0 ist und  if ((t != 0) && ((27 / t) < 3)) {

        System.out.println("Der Wert von t ist nicht 0.");
da muss der doch automatisch else schreiben da die erste Bedingung wenn t ungleich 0 ist obwohl t = 0 ist?


----------



## njans (23. Jul 2014)

Anscheinend ist deine Musterlösung falsch. Bei dem Code, den du hier angegeben hast, sind deine Lösungen korrekt.


----------



## ellegance (23. Jul 2014)

Vielen dank für deine Antwort


----------

