2014-04-15 9 views
19

के लिए त्रुटि इस लाइनबुरा संकार्य प्रकार द्विआधारी ऑपरेटर "और" जावा

if ((a[0] & 1 == 0) && (a[1] & 1== 0) && (a[2] & 1== 0)){ 

इस पूरे कोड है दिखाता है:

if ((a[0] & 1) == 0 && (a[1] & 1) == 0 && (a[2] & 1) == 0){ 
:

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"); 
    } 
} 
} 

मैं कोड ठीक कर दी है

ब्रैकेट के साथ कोई समस्या थी, जो भविष्य में किसी के लिए अपडेट की गई थी।

उत्तर

34

== की उच्च प्राथमिकता है & से अधिक। अपनी खुद की प्राथमिकता निर्दिष्ट करने के लिए आप अपने परिचालन को () में लपेटना चाहेंगे।

((a[0] & 1) == 0) 

इसी तरह if स्थिति के सभी हिस्सों के लिए।

0

आपको कोष्ठक का उपयोग करके अधिक सटीक होना है, अन्यथा जावा ऑपरेटरों के क्रम का उपयोग नहीं करेगा जिन्हें आप उपयोग करना चाहते हैं।

if ((a[0] & 1 == 0) && (a[1] & 1== 0) && (a[2] & 1== 0)){ 

हो जाता है

if (((a[0] & 1) == 0) && ((a[1] & 1) == 0) && ((a[2] & 1) == 0)){ 
3

क्योंकि &== की तुलना में एक कम प्राथमिकता है।

आपका कोड a[0] & (1 == 0) के बराबर है, और जब तक a[0] एक बूलियन इस संकलन नहीं होगा ...

आप की जरूरत है:

(a[0] & 1) == 0 

आदि आदि

(हाँ, जावा एक बूलियन & ऑपरेटर - एक गैर शॉर्टकट लॉजिकल और

+0

'गैर शॉर्टकट लॉजिकल और' का क्या अर्थ है? – Colas

संबंधित मुद्दे