Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
wahrscheinlich ne super einfache, doofe und nicht in das forum gehörende frage(hausaufgabe.-.)
ich habe genau 3 boolean werte und wenn GENAU einer false ist soll true rauskommen. hab jetzt mit super vielen möglichkeiten getestet.-. aber schlussendlich bin ich mit einzel abfragen und xor rausgekommen
und jetzt würde ich halt gerne wissen ob es nen besseren/einfacheren weg gäbe.-. habe schonversucht ohne true und false hinzuschreiben mit negation und ==/&& dem einfachen d^e^f etc hat alles nicht funtioniert
Code:
boolean d,e,f;
d= false;
e= true;
f= true;
if((d==false && e==true && f==true)^(d==true && e== false && f==true)^(d==true && e==true && f==false)){
System.out.println ("true eine von d e oder f ist false");
}
else {
System.out.println("false mehr als eine oder keine ist false");
}
und was meinst du hoffman? || statt ^? oder || statt &&(d||e||f =false?) funkt net da wenn beide gleichungsteile zutreffen(mehr als 1 false) es trotzdem true ausgibt
ps: trotzdem danke für die schnelle antwort
yeah danke sehr^^ sieht jetzt wenigstens etwas proffesioneller aus.-. aber trotzdem soviel arbeit für so ne einfache aufgabe:/ warum funkt (!(e^f^d) nicht? xors aufgabe ist es doch bei zwei wenn beide verschieden sind true rauszugeben. aber könnte man das nicht im falle von meheren interpretieren als: wenn einer anders ist (f/t/t) gebe true raus.
Das wäre also vergleichbar mit der Forderung, dass 0 + 1 + 1 = 1 sein soll. Wenn man die Abfrage mehrfach benötigt, kann man ja einfach eine Methode dafür programmieren.
Die Tabelle für e^f^d sieht wie folgt aus.
e f d q
0 0 0 0
1 0 0 1
0 1 0 1
1 1 0 0
0 0 1 1
1 0 1 0
0 1 1 0
1 1 1 1
Und die letzte Zeile ist einfach zu erklären, da e^f hier 0 ergibt und das dann mit einer weiteren 1 exclusiv ist. Somit erhält man zum Schluss eine 1.
Soweit ist XOR aber schon gut, man muss dann einfach noch den letzten Fall extra behandeln.
je true werte/false werte zählen wäre wohl die einfachste möglichkeit aber hatte ich noch net ^^
sasche super antwort vielen dank versteh jetzt warum das nicht geklappt hat
HALT STOP ich habe es doch noch mal getestet und (f/f/f) bringt wieder true raus.-.
und (true/true/true) gibt ebenfalls wieder true raus.-.
Folgend die Tabelle für !(e ^ f ^ d &&!(e && f && d))
e | f | d || q
--------------
0 | 0 | 0 || 1
1 | 0 | 0 || 0
0 | 1 | 0 || 0
1 | 1 | 0 || 1
0 | 0 | 1 || 0
1 | 0 | 1 || 1
0 | 1 | 1 || 1
1 | 1 | 1 || 1
Ich dachte Du willst auf false Abfragen. Wenn du die Negation am Ende weg lässt ergibt sich die folgende Tabelle.
e ^ f ^ d && !(e && f && d)
e | f | d || q
--------------
0 | 0 | 0 || 0
1 | 0 | 0 || 1
0 | 1 | 0 || 1
1 | 1 | 0 || 0
0 | 0 | 1 || 1
1 | 0 | 1 || 0
0 | 1 | 1 || 0
1 | 1 | 1 || 0