De fout toont deze regel
if ((a[0] & 1 == 0) && (a[1] & 1== 0) && (a[2] & 1== 0)){
Dit is de hele code:
public class Ex4 {
public static void main(String[] args) {
int [] a = new int [3];
if(args.length == 3)
{
try{
for(int i = 0; i < args.length; i++)
{
a[i] = Integer.parseInt(args[i]);
}
}
catch(NumberFormatException e){
System.out.println("Wrong Argument");
}
if ((a[0] & 1 == 0) && (a[1] & 1== 0) && (a[2] & 1== 0)){
System.out.println("yes");
}
else {
System.out.println("no");
}
}
else{
System.out.println("Error");
}
}
}
Ik heb de code aangepast:
if ((a[0] & 1) == 0 && (a[1] & 1) == 0 && (a[2] & 1) == 0){
Er was een probleem met de haakjes, voor iedereen in de toekomst bijgewerkt.
Antwoord 1, autoriteit 100%
==
heeft een hogere prioriteit dan &
. Misschien wilt u uw bewerkingen in ()
plaatsen om aan te geven hoe u wilt dat uw operanden aan de operators binden.
((a[0] & 1) == 0)
Hetzelfde geldt voor alle delen van de if
voorwaarde.
Antwoord 2, autoriteit 5%
Omdat &
een mindereprioriteit heeft dan ==
.
Uw code is gelijk aan a[0] & (1 == 0)
, en tenzij a[0]
een boolean is, dit zal niet compileren …
U moet:
(a[0] & 1) == 0
etc enz.
(Ja, Java doet Hava een Booleaanse &
operator – een niet-snelkoppeling logisch en)
Antwoord 3
U moet nauwkeuriger zijn, gebruikmakend van haakjes, anders zal Java de volgorde van operanden niet gebruiken die u wilt gebruiken.
if ((a[0] & 1 == 0) && (a[1] & 1== 0) && (a[2] & 1== 0)){
wordt
if (((a[0] & 1) == 0) && ((a[1] & 1) == 0) && ((a[2] & 1) == 0)){