2012-12-19 9 views
7

प्रिंट नहीं करता यह मेरा कोड है:println उम्मीद मूल्य

public static void main(String[] arg) 
{ 

    String x = null; 
    String y = "10"; 
    String z = "20"; 

    System.out.println("This my first out put "+x==null?y:z); 

    x = "15"; 

    System.out.println("This my second out put "+x==null?y:z); 

} 

मेरे उत्पादन है:

20 
20 

लेकिन मैं इस उम्मीद कर रहा हूँ:

This my first out put 10 
This my second out put 20 

कोई समझा सकते हैं मुझे प्रिंटल कॉल दोनों के लिए आउटपुट के रूप में "20" क्यों मिल रहा है?

+0

सुमित सिंह का जवाब बताता है कि आउटपुट ऐसा क्यों है। कारण ऑपरेटर प्राथमिकता है, [यह दस्तावेज़] देखें (http://docs.oracle.com/javase/tutorial/java/nutsandbolts/operators.html) – jlordo

+0

@ कोडर्स मैंने स्वीकार किया – Suranga

उत्तर

9

System.out.println("This my first out put "+x==null?y:z);

("This my first out put "+x)==null?y:z है जो कभी नहीं सच होने जा रहा है की तरह निष्पादित किया जाएगा की कोशिश करो। तो, यह z मान प्रदर्शित करेगा।

उदाहरण के लिए:

int x=10; 
int y=20; 
System.out.println(" "+x+y); //display 1020 
System.out.println(x+y+" "); //display 30 

उपरोक्त परिदृश्य के लिए, आपरेशन बाएं से दाएं प्रदर्शन किया।

रूप में, आप ने कहा कि आप इस उम्मीद कर रहे हैं:

This my first output 10 

इसके लिए आपको अपने कोड में कुछ बदलाव की जरूरत है। प्रयास करें इस

System.out.println("This my first output " + ((x == null) ? y : z));

+1

जावा में अभिव्यक्तियों का मूल्यांकन हमेशा सही नहीं है। यह ऑपरेटर प्राथमिकता का खाता लेता है! –

+0

@StephenC मुझे पता है, लेकिन मैं केवल इस परिदृश्य के लिए बात कर रहा था। इसके बजाय, यह अधिक भ्रम में वृद्धि करेगा, मैं हमेशा अपने बयान से हटा दिया। मुझे विश्वास है, अब यह ठीक रहेगा। :) – Ravi

4

System.out.println("This my first out put "+ (x==null?y:z)); 
+2

यह वास्तव में वांछित आउटपुट उत्पन्न करेगा, लेकिन करता है OPs प्रश्न का उत्तर न दें: _C क्या कोई मुझे समझाएगा ** क्यों ** मुझे प्रिंटल कॉल दोनों के लिए आउटपुट के रूप में "20" मिल रहा है? _ – jlordo

1

आप प्रयास करने की आवश्यकता:

निम्नलिखित कोड
System.out.println("This my first out put "+(x==null?y:z)); 
x = "15"; 
System.out.println("This my second out put "+(x==null?y:z)); 
2

उपयोग यह आपकी समस्या का समाधान होगा: समस्या है क्योंकि इसकी ले जा रहा है -

System.out.println(("This my first out put "+x==null?y:z); 

रूप

System.out.println(("This my first out put "+x)==null?y:z);

public static void main(String[] arg) 
{ 

    String x = null; 
    String y = "10"; 
    String z = "20"; 

    System.out.println("This my first out put "+(x==null?y:z)); 

    x = "15"; 

    System.out.println("This my second out put "+(x==null?y:z)); 

} 
+0

+1, पहले वास्तविक प्रश्न का उत्तर देने के लिए, ** ** आउटपुट ऐसा क्यों है। – jlordo

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