Logik knobeln...

Surfforfun

Mitglied
2 Klassen, mit der Hauptklasse wird ein Objekt der Nebenklasse erzeugt und hin und her ein paar Logikfunktionen durchgespielt... Die Ausgabe ist:

F1 wird ausgeführt
True
F2 wird ausgeführt
F1 wird ausgeführt
False <= Warum??

Warum kommt am Ende False raus?

boolean c = lt.f2()&lt.f1();
System.out.println(c);

Warum ist c false? Ist doch alles true - und true & true gibt doch wieder true oder sehe ich das false??


Java:
public class LogicTest {
  boolean a=true;
  int c=3;
  boolean b=false;
  boolean f1(){
      System.out.println("f1 wird ausgeführt");
      return a|| c++==3;
  }
  boolean f2(){
      System.out.println("f2 wird ausgeführt");
      return b || ++c==3;
  }
}


Java:
public class RunLogicTest {
  public static void main(String[] args) {
    
      LogicTest lt = new LogicTest();
      boolean b = lt.f1()||lt.f2();
    System.out.println(b);
    
      boolean c = lt.f2()&lt.f1();
      System.out.println(c);
    
  }
}
 

eRaaaa

Top Contributor
Wie kommst du denn drauf dass alles true ist? Ich denke der Sinn der Übung soll den Unterschied zwischen || und | sowie && und & verdeutlichen.
Spiele das doch einfach mal komplett durch, wann wird was aufgerufen, ausgewertet und wie sind die (Teil-)Ergebnisse ?
 

Surfforfun

Mitglied
Sehr gerne ;)

Nach "main" wird das Logic-Test-Objekt lt erzeugt.
boolean a ist true,
boolean b ist false.

boolean b wird neu zugeornet. || ist ein Oder - zuerst wird links ausgewertet, wenn da true rauskommt wird die rechte Seite nicht mehr ausgewertet.
Links steht Aufruf von f1() in lt.

Ausgabe: f1 wird ausgeführt
a wird zurückgegeben, weil true (wieder ||)
boolean b ist true und wird ausgegeben.

boolean a ist true
boolean b ist true

Es geht weiter mit der neuen Zuordnung von c:
Aufruf von f2 und Ausgabe
f2 wird ausgeführt

return b, weil b true ist...
Aufruf von f1 auf der rechten Seite des &: f1 wird ausgeführt
a ist true und wird zurückgegeben...

Java:
boolean c = lt.f2()&lt.f1();
      System.out.println(c);

Auf beiden Seiten des & kommt true raus!
Also ist c true und wird ausgegeben!

Computer sagt nein! Computer sagt c ist false!


Warum ist c false??
 

eRaaaa

Top Contributor
Sehr gerne ;)

Nach "main" wird das Logic-Test-Objekt lt erzeugt.
boolean a ist true,
boolean b ist false.

boolean b wird neu zugeornet. || ist ein Oder - zuerst wird links ausgewertet, wenn da true rauskommt wird die rechte Seite nicht mehr ausgewertet.
Links steht Aufruf von f1() in lt.

Ausgabe: f1 wird ausgeführt
a wird zurückgegeben, weil true (wieder ||)
boolean b ist true und wird ausgegeben.

boolean a ist true
boolean b ist true

Hier liegt dein Denkfehler. Das b in der main ist ein anderes b als das in der Methode f2()!! Das in der f2-Methode ist und bleibt false, das hat rein gar nichts mit dem b in der main Methode zu tun!
 

Surfforfun

Mitglied
Uups...

b ist false
c ist 3
Java:
return b || ++c==3;
Präinkrement c -> 4==3 ist auch false!

Also false

Vielen Dank eRaaaa!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Tic Tac Toe Logik kürzer fassen Java Basics - Anfänger-Themen 8
I Logik Zahlungsprozess - Wann Bestellobjekt anlegen? Java Basics - Anfänger-Themen 2
H Logik Fehler erkennen Java Basics - Anfänger-Themen 21
M Kann mir jemand hier die Logik vermitteln? Java Basics - Anfänger-Themen 3
M Kann mir jemand die Logik erklären? Java Basics - Anfänger-Themen 1
Hias12345 Schach(Springer Logik) Java Basics - Anfänger-Themen 27
C Array-Werte werden gemischt, ohne Logik Java Basics - Anfänger-Themen 2
R Best Practice Logik in der Datenbank oder in Java? Java Basics - Anfänger-Themen 3
B Logik Upgrade / Downgrade Java Basics - Anfänger-Themen 13
I Hilfe bei der Logik Java Basics - Anfänger-Themen 9
A Minesweeper Logik Java Basics - Anfänger-Themen 10
D Logik von GUI trennen Java Basics - Anfänger-Themen 3
Meeresgott OOP Gui, Logik und Datenbank richtig aufbauen Java Basics - Anfänger-Themen 43
V Memory Logik Problem/Denkblockade, bitte helft Java Basics - Anfänger-Themen 1
Z Jump and Run - Grafik,Logik und GUI trennen Java Basics - Anfänger-Themen 4
P fibonacci - do while Statement Logik Fehler Java Basics - Anfänger-Themen 5
Z GUI und Logik - Trennung Java Basics - Anfänger-Themen 2
H Logik Frage Java Basics - Anfänger-Themen 3
X Methoden Logik-Problem mit Schleifen. Java Basics - Anfänger-Themen 7
kaoZ Logik und Gui trennen Java Basics - Anfänger-Themen 3
G Klassen Von Logik auf TextField in der GUI zugreifen Java Basics - Anfänger-Themen 14
V Verstehe die Logik nicht ... Java Basics - Anfänger-Themen 30
S OOP Trennung der GUI von der Logik Java Basics - Anfänger-Themen 11
F While Schleife - Logik ? Java Basics - Anfänger-Themen 5
B Logik von verschachtelten For Schleifen Java Basics - Anfänger-Themen 6
Luk10 Logik/Mathe Problem Java Basics - Anfänger-Themen 6
M Logik in Java Java Basics - Anfänger-Themen 4
K java.util.ConcurrentModificationException problem in der Logik? Quaxli-Tutorial Java Basics - Anfänger-Themen 9
S Frage zu Verständnis und Logik Java Basics - Anfänger-Themen 5
K Logik in if-Bedingung Java Basics - Anfänger-Themen 2
L Wie Trennung von Logik und Ausgabe? Java Basics - Anfänger-Themen 6
T Hilfe - Ein Logik Problem Java Basics - Anfänger-Themen 17
sliwalker Wie löse ich eine "DfB-Pokalauslosung"?Logik fehlt Java Basics - Anfänger-Themen 5
T Problem mit der Logik von Switch und do-while Java Basics - Anfänger-Themen 3
G die Logik für eine Buchung! Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben