2010-09-27 13 views
5

मेरे पास यह असाइनमेंट है जिसे मैंने आजमाया है।जावा होमवर्क सहायता

Enter a +ve number 
1 
You entered 1 
I'd asked for a +ve number :) 

: लेकिन जब मैं 1 में प्रवेश के रूप में 1> 0 और 1 भी नहीं है, लेकिन मैं अभी भी रूप में आउटपुट प्राप्त यह किसी भी उत्पादन नहीं देना चाहिए।

import java.util.Scanner; 
class Main { 
    public static void main(String[] args) { 
     Scanner input = new Scanner(System.in); 
     System.out.println("Enter a +ve number"); 
     int number = input.nextInt(); 
     System.out.println("You entered "+number); 
     if(number > 0) 
     if(number %2 == 0) 
      System.out.println("Number"+number+" is even and +ve"); 
     else 
      System.out.println("I'd asked for a +ve number :)"); 
    } 
} 
+0

यह कोड का प्रारूपण उपयोग करें और यह अधिक पठनीय –

+1

बनाने के लिए इतना है कि मैं इसे संपादित किया है अपने कोड से लाइन नंबर दूर करने के लिए सबसे अच्छा होगा की तरह अगर बयान से बाहर खरोज मा कोड की नियंत्रण संरचना tches। ओह, जवाब अब थोड़ा स्पष्ट दिखता है। – JeremyP

+0

@ user459246: हो सकता है कि यह टाइप त्रुटि हो .. कक्षा को परिभाषित करने से पहले "सार्वजनिक" का उपयोग करें। जैसे पब्लिक क्लास मुख्य – Shashi

उत्तर

9

आपका किसी और वास्तव में नहीं खरोज शो के रूप में के अंतर्गत आता है।

if(cond1) { 
if(cond2) { 
} else { 
} 
} 

इसका कारण यह है जावा व्याकरण का कहना है कि एक और को निकटतम बेजोड़ के अंतर्गत आता है, तो जो करने के लिए यह संभवतः हैं कर सकते हैं: के रूप में

if(cond1) 
if(cond2) 
else // this else belongs to 2nd if not 1st if. 

में ही है।

आप पहली बार साथ और मैच के लिए आप के रूप में कोष्ठक का उपयोग करने की आवश्यकता है चाहते हैं:

if(cond1) { 
if(cond2) { 
} 
} else { 
} 
8

जांच लें कि कोड वास्तव में तर्क यह चाहिए इस प्रकार है - खरोज प्रवाह नियंत्रण के साथ मदद नहीं करेगा, यही घुंघराले ब्रैकेट {} के लिए हैं।

+3

यही कारण है कि अगर मैं खंड के बाद कोड की केवल एक पंक्ति है तो भी मैं हमेशा ब्रेसिज़ डालता हूं। –

0

सबसे पहले आपको डीबग करने का प्रयास करना चाहिए (ग्रहण का उपयोग करके) यदि संख्या (संख्या> 0) कथन को आंतरिक रूप से लपेटने के बाद पैराथेसिस जोड़ें।

4

मैं जब मैं में प्रवेश निम्नलिखित आउटपुट प्राप्त 1:

Enter a +ve number 
1 
You entered 1 
I'd asked for a +ve number :) 

कौन सा उचित है के रूप में आप पहली बार

if (number > 0) 

जो number == 1 के लिए सच है की जाँच करें और उसके बाद आप जाँच

if (number % 2 == 0) 

जो number == 1 के लिए गलत है इस प्रकार अन्य शाखा है लिया:

System.out.println("I'd asked for a +ve number :)") 

आपका कोड शायद कुछ ऐसा दिखाई देगा:

Scanner input = new Scanner(System.in); 
System.out.println("Enter a +ve number"); 
int number = input.nextInt(); 
System.out.println("You entered " + number); 
if (number > 0) { 
    if (number % 2 == 0) 
     System.out.println("Number" + number + " is even and +ve"); 
} else { 
    System.out.println("I'd asked for a +ve number :)"); 
} 
5

शायद होगा ऐसा इसलिए है क्योंकि आपके ifs इस तरह व्याख्या की जाती हैं:

if(number > 0) 
    if(number %2 == 0) 
     System.out.println("Number"+number+" is even and +ve"); 
    else 
     System.out.println("I'd asked for a +ve number :)"); 

कैसे कंप्यूटर चाहिए था पता है कि आप मतलब? आप इसे स्पष्ट करने के लिए कोष्ठक का उपयोग करने की जरूरत है:

if(number > 0) { 
    if(number %2 == 0) { 
     System.out.println("Number"+number+" is even and +ve"); 
    } 
} else { 
    System.out.println("I'd asked for a +ve number :)"); 
} 
0

मैं Netbeans में अपने कोड फेंक दिया और पठनीयता के लिए यह ऑटो प्रारूप यह था। क्या यह आपका इच्छित तर्क प्रवाह है? चूंकि संकलक आपके कथन संरेखण/घोंसले को देखता है।

import java.util.Scanner; 

public class Main 
{ 


    public static void main(String[] args) 
    { 
     Scanner input = new Scanner(System.in); 
     System.out.println("Enter a +ve number"); 
     int number = input.nextInt(); 
     System.out.println("You entered " + number); 

     if (number > 0) 
     { 
      if (number % 2 == 0) 
      { 
       System.out.println("Number" + number + " is even and +ve"); 
      } 
      else 
      { 
       System.out.println("I'd asked for a +ve number :)"); 
      } 
     } 
    } 

} 
0

1% 2 == 1 इसलिए यह स्पष्ट है कि यह किसी शाखा

0

पर प्रवेश करती है इसकी वजह से अपने किसी और बयान कह रहा है इसकी फिर भी नहीं कह अगर

"मैं एक + ve संख्या के लिए कहा"

यह कदम इस

 if(number > 0) 
    { 
     if(number %2 == 0) 
     { 
      System.out.println("Number"+number+" is even and +ve"); 
     } 
    } 
    else 
    { 
     System.out.println("I'd asked for a +ve number :)"); 
    } 
संबंधित मुद्दे