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