Un if
affermazione è della forma:
if (condition) statement
Hai attualmente got due condizioni tra parentesi ... che finiscono anche fino assegnare i valori, che probabilmente non è quello che desideri.
Quindi primo fix per farlo compilare:
if ((First_Relation = true) & (Second_Relation = true))
quindi modificare le assegnazioni ai controlli di uguaglianza, in quanto altrimenti sarà sufficiente assegnare true
per entrambe le variabili e la condizione passerà indipendentemente dai loro valori precedenti:
if ((First_Relation == true) & (Second_Relation == true))
Quindi rimuovere i confronti con costanti booleane:
if ((First_Relation) & (Second_Relation))
quindi rimuovere parentesi inutili:
if (First_Relation & Second_Relation)
quindi apportare le variabili seguono Java convenzioni di denominazione:
if (firstRelation & secondRelation)
quindi utilizzare il più convenzionale &&
invece di &
-&&
è breve circuito, ed è quasi sempre quello che vuoi:
Ora hai ancora un punto e virgola immediatamente dopo la tua condizione if
, che lo rende inutile: sarà sempre eseguire l'istruzione System.out.println
, perché non fa parte dell'istruzione if
. Si potrebbe è sufficiente rimuovere il punto e virgola, ma mi piacerebbe aggiungere le parentesi graffe per chiarezza:
if (firstRelation && secondRelation) {
System.out.println("insert text here");
}
Avanti, notare che si sta solo in realtà inizializza le variabili, se la condizione è vera - così avrai attualmente ottenere un errore in fase di compilazione per cercare di leggere variabili che non sono assegnate in modo definitivo.
In primo luogo, fissare l'assegnazione definitiva:
// Names changed to follow conventions
boolean firstRelation = p > q;
boolean secondRelation = r < s;
... e il codice di cui sopra dovrebbe andare bene.
Successivamente, si nota che stai davvero guadagnando davvero poco da quelle variabili extra.Inline le condizioni invece:
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 ";
}
A questo punto, diventa molto chiaro che c'è un ulteriore bug - perché il vostro messaggio parla !(r < s)
ma la condizione è solo r < s
. Quindi devi decidere cosa vuoi ottenere e fare in modo che il codice e il messaggio riflettano la stessa cosa. Si noti che non si finisce il messaggio, neanche. In effetti, si potrebbe semplificare il tutto a:
System.out.println("Given the values for p,q,r, and s the expression "
+ "(p > q) && !(r < s) evaluates to " + ((p > q) && !(r < s));
... o quello che volete l'espressione di essere in realtà.
'First_Relation = true' dovrebbe essere' First_Relation == true' in 'if' – Ashok
Perché la gente votando la domanda verso il basso? Afferma il problema con la massima chiarezza del richiedente e dimostra lo sforzo. Non tutte le domande devono riguardare argomenti avanzati o target coder avanzati. – shovavnik
Vuoi dire, la terza affermazione se? – Raedwald