Programm zum Testen der Striktheit von Java

  • Themenstarter Themenstarter Guest
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo,

Ich soll ein Programm entwickeln, dass mir ausgibt, ob Java bei den arithmetisch Operatoren && und || strikt oder nicht-strikt ist.
(Kurz als Erleuterung: Strikt bedeutet, wenn ein Parameter der Operation undefiniert (Bottom) ist, so muss auch das Ergebnis undefiniert sein).

Wie soll ich das in Java machen? Ich habe keine Ahnung wie ich einem boolean einen undefinierten Wert zuweißen könnte, OHNE das es zu einem Compilerfehler kommt!
Ich habe schon versucht, die Variable einfach nicht zu initialisieren - das klappt aber nicht!

Wäre super, wenn jemand eine Idee für mich hätte!

Danke schonmal im Vorraus,
Viele Grüße,
Marcus
 
Hm, keine Ahnung, vielleicht so?

Code:
Boolean a = new Boolean(true);
Boolean b = new Boolean(null);
		
System.out.println(a.booleanValue() && b.booleanValue());


Demnach wäre Java nicht strikt, denn...

Code:
Boolean.valueOf(null)

... liefert false.
 
Ist mir eigentlich auch klar, dass die immer definiert sind, aber ich komm bei dieser Aufgabe einfach nicht weiter:


Erstellen Sie ein Java-Programm, das testet, ob die in Java Verwendeten Operatoren && (für und) und || (für oder) eine strikte, oder eine nicht-strikte Auswertung verwenden. Es ist ausreichend, wenn Sie die Fälle testen, bei denen sich die Ergebnisse zwischen strikter und nicht strikter Auswertung unterscheiden.



Die Fälle wo sie sich unterscheiden sind:
false && undefiniert
true || undefiniert


Ich weiß echt nicht weiter!

Viele Grüße,
Marcus
 
Setz doch fuer undefiniert einen Ausdruck ein, der eine Exception werfen wirf. Z.b. (1/0 == 123).
 
Erstellen Sie ein Java-Programm, das testet, ob die in Java Verwendeten Operatoren && (für und) und || (für oder) eine strikte, oder eine nicht-strikte Auswertung verwenden. Es ist ausreichend, wenn Sie die Fälle testen, bei denen sich die Ergebnisse zwischen strikter und nicht strikter Auswertung unterscheiden.
völlig gaga und plemplem die Aufgabe

eine boolean in Java ist nie "undefiniert"

vielleicht eine Begriffsverwirrung

strikt

vs.

short-circuit-evaluation

( false && .... ist immer false, egal was kommt, der Ausdruck rechts wird nicht ausgewertet, true || ist immer true usw.)
 
@ Beni: Geht auch nicht .. bekomme einen Laufzeitfehler wegen Div durch 0

@Bleiglanz: Ich find die Aufgabe auch behämmert .. aber was muss man nicht alles als Student machen 😀
Dieser short-circuit-evaluation den du beschreibst, steckt ja genau hinter der Nicht-Striktheit von && bzw || ... nur muss ich das in einem Programm zeigen und dafür brauch ich angeblich etwas undefiniertes!
 
reden wir schon vom gleichen?

Bottom ist das auf dem Kopf stehende T?

wenn du das mit der kurzevalutation meinst, das geht nur mit einer Methode...

Code:
boolean a = false && foo();

public boolean foo(){
    System.out.println("das wird nicht ausgegeben");
    return true;
}
 
Anonymous hat gesagt.:
Dieser short-circuit-evaluation den du beschreibst, steckt ja genau hinter der Nicht-Striktheit von && bzw || ... nur muss ich das in einem Programm zeigen und dafür brauch ich angeblich etwas undefiniertes!

Nein, in Java kann x && y NIEMALS undefiniert sein, das gibts eben einfach nicht

kein wunder wenn schon x und y NIEMALS undefiniert sind
 
Ich bin echt mal gespannt was meine Profs da von mir wollen ... bestimmt denk ich nur zu kompliziert und das ist was ganz banales 🙂

Danke aber trotzdem für eure Hilfe!
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben