Eine if
Aussage ist von der Form:
if (condition) statement
Sie sind zur Zeit zwei klammert Bedingungen haben ... die auch am Ende Zuweisen von Werten, was wahrscheinlich nicht das ist, was Sie wollen.
So first fix, um es zu kompilieren:
if ((First_Relation = true) & (Second_Relation = true))
dann die Zuweisungen auf Gleichheit prüft ändern, da sonst wird es einfach true
beide Variablen zuweisen und die Bedingung wird ohne Rücksicht auf ihre vorherigen Werte:
if ((First_Relation == true) & (Second_Relation == true))
Dann entfernen Vergleiche mit boolean Konstanten:
if ((First_Relation) & (Second_Relation))
Dann unnötige Klammern entfernen:
if (First_Relation & Second_Relation)
Dann machen die Variablen Java Namenskonventionen folgen:
if (firstRelation & secondRelation)
Dann nutzen Sie die konventionelleren &&
statt &
-&&
ist von Kurzschlüssen, und ist fast immer Was Sie wollen:
if (firstRelation && secondRelation)
Jetzt haben Sie noch ein Semikolon dir ectly nach Ihrer if
Bedingung, die es sinnlos macht - es wird immer führen Sie die System.out.println
Anweisung, denn das ist nicht Teil der if
Aussage. Sie könnte entfernen Sie einfach das Semikolon, aber ich würde hinzufügen, Klammern für Klarheit:
if (firstRelation && secondRelation) {
System.out.println("insert text here");
}
Als nächstes beachten Sie, dass Sie nur die Variablen tatsächlich initialisiert, wenn die Bedingung erfüllt ist - so dass Sie zur Zeit Erhalte einen Fehler beim Kompilieren, um zu versuchen, Variablen zu lesen, die nicht definitiv zugewiesen sind.
Zuerst befestigen Sie die eindeutige Zuordnung:
// Names changed to follow conventions
boolean firstRelation = p > q;
boolean secondRelation = r < s;
... und der obige Code sollte in Ordnung sein.
Als nächstes stellen Sie fest, dass Sie tatsächlich sehr wenig von diesen zusätzlichen Variablen gewinnen.Inline-Bedingungen statt:
if (p > q && r < s) {
System.out.println("Given the values for p,q,r, and s the expression "
+ "(p > q) && !(r < s) evaluates to ";
}
An diesem Punkt wird es sehr klar, dass es ein weiterer Fehler ist - weil Sie Ihre Nachricht über !(r < s)
spricht aber die Bedingung ist nur r < s
. Sie müssen also entscheiden, was Sie erreichen möchten, und der Code und die Nachricht sollen dasselbe widerspiegeln. Beachten Sie, dass Sie die Nachricht auch nicht beenden. In der Tat könnten Sie die ganze Sache zu vereinfachen:
System.out.println("Given the values for p,q,r, and s the expression "
+ "(p > q) && !(r < s) evaluates to " + ((p > q) && !(r < s));
... oder was auch immer Sie wollen, dass der Ausdruck tatsächlich sein.
'First_Relation = true' sollte' First_Relation == true' in 'if' – Ashok
Warum unten Menschen Abstimmung über die Frage werden? Es stellt das Problem so klar dar, wie es der Fragesteller kann, und demonstriert die Anstrengung. Nicht jede Frage muss über fortgeschrittene Themen oder fortgeschrittene Programmierer sein. – shovavnik
Sie meinen, die dritte if-Anweisung? – Raedwald