2011-01-01 22 views
7

मुझे उम्मीद है कि यह एक बेवकूफ सवाल नहीं है, लेकिन मैंने पाया है कि हर उदाहरण को मैंने देखा है और ऐसा लगता है कि मेरे पास यह कोड सही है और यह अभी भी काम नहीं कर रहा है ... मैं एक दर्ज करता हूं संख्या और यह लूपिंग के बजाय कोड की अगली पंक्ति पर चलता है। मैं उपयोगकर्ता इनपुट संख्याओं के साथ एक सरणी भरने के लिए इसका उपयोग कर रहा हूँ। मैं किसी भी मदद की सराहना करता हूं, धन्यवाद।लूप के लिए जावा

for(i=0; i<9; i++); 
{ 
    System.out.println ("Please enter a number:"); 
    Num[i] = keyboard.nextDouble(); 
    Sum += Num[i];  
    Product *= Num[i];  
} 
+1

यह संकलन भी नहीं करना चाहिए। 'I' घोषित नहीं किया गया है। जब तक कि आपने शीर्ष पर कहीं भी वैश्विक रूप से घोषित नहीं किया है। –

+1

उस तर्कसंगत से, न तो 'न्यू', 'कीबोर्ड', 'Sum', या 'product' है। –

+0

आपको शायद अपने प्रश्न का उत्तर चुनना चाहिए। – deterb

उत्तर

4

पाश लाइन के लिए से अंतिम वर्ण अर्धविराम हटाने ............

3

वहाँ पहली पंक्ति के अंत में एक अर्धविराम नहीं होना चाहिए। यह इंगित करता है कि आपका लूप खाली है।

4

भविष्य में इस गलती से बचने के लिए आपको हमेशा लूप के लिए एक ताजा चर का उपयोग करना चाहिए। बजाय:

for (i = 0; ... 

लिखने

for (int i = 0; ... 

इस तरह यह एक संकलन समय त्रुटि हो सकता है, चर के बाद से मैं निम्नलिखित ब्लॉक में दायरे में नहीं होगा।

+0

हालांकि मैं आपकी रणनीति की अनुशंसा करता हूं, लेकिन मैं नहीं देख सकता कि यह कोड के लिए स्टीव – RoflcoptrException

+0

की इस गलती से कैसे बच सकता है (int i = 0; i <5; i ++); {i ++; } 'पहचानकर्ता' i 'अर्धविराम के बाद और ब्लॉक से पहले गुंजाइश से बाहर चला जाता है। –

+0

इससे गलती की संभावना कम हो गई होगी, क्योंकि मुझे लूप के लिए स्कॉप्ड किया जाएगा। अब संख्या [i] नीचे दिए गए ब्लॉक में यह काम करता है क्योंकि मुझे स्पष्ट रूप से इसके पहले परिभाषित किया गया है, लेकिन अन्यथा संकलन त्रुटि का पालन किया जाएगा और प्रोग्रामर यौगिक कथन (ब्लॉक) को आसानी से महसूस करेगा और लूप अलग हो जाएगा। –

16

लूप के अंत में ; को खाली बयान के रूप में लिया जाता है, जो आपके फॉर-लूप के लिए खाली ब्लॉक के बराबर होता है। संकलक अपने कोड पढ़ रहा है के रूप में:

int i; 
.... 
for(i=0; i<9; i++) 
    /* no-op */; 

/* inline block with no relation to for-loop */ 
{ 
    System.out.println ("Please enter a number:"); 
    Num[i] = keyboard.nextDouble(); 
    Sum += Num[i];  
    Product *= Num[i];  
} 

; निकालें अपने इच्छित व्यवहार प्राप्त करने के लिए।


आपको लूप से i बाहर की जरूरत नहीं है, तो आप for बयान के भीतर अपनी घोषणा को स्थानांतरित कर सकते हैं।

for(int i=0; i<9; i++) 
{ 
    // `i` is only usable here now 
} 
// `i` is now out of scope and not usable 

इस वाक्य रचना का उपयोग करते हुए जब गलत अर्धविराम ; वर्तमान एक संकलन त्रुटि है कि आप गलत ; पहले करने के लिए सतर्क कर दिया जाएगा पैदा करने वाला होता था। संकलक इस देखना होगा:

for(int i=0; i<9; i++) 
    /* no-op */; 

/* inline block with no relation to for-loop */ 
{ 
    System.out.println ("Please enter a number:"); 
    Num[i] = keyboard.nextDouble();  // compile error now - `i` is out-of-scope 
    Sum += Num[i];  
    Product *= Num[i];  
} 

यह एक उदाहरण होगा कारण है कि यह जब संभव चर का दायरा सीमित करने के लिए अच्छा अभ्यास है।

+0

वाह मुझे पता था कि यह कुछ बेवकूफ बनने वाला था ... arrrrgh। हालांकि बहुत बहुत धन्यवाद !! यह अब इरादे के रूप में काम कर रहा है :) – Steve

0

उत्तर पहले ही दिया जा चुका है, लेकिन मैं यह जोड़ना चाहता हूं कि यदि आप आईडीई * का उपयोग कर रहे हैं, तो शायद उन प्रकार के रिक्त बयान और अन्य आसान बनाने के लिए चेतावनी होगी, जो कि अनदेखा करना आसान है गलतियों (उदाहरण के लिए शर्तों में तुलना करने के बजाय assinging)।

  • वास्तव में इस गलती पर उदाहरण पेज http://hubpages.com/hub/Java-Debugging-Tip-The-Empty-Statement के लिए देख सकते हैं और NetBeans मदद कैसे कर सकते हैं आप इसे पहचानना।
0

बस आपको बताने के लिए। कुछ इस तरह:

for(;;) 
    ; 

व्यस्त प्रतीक्षा में अपने कार्यक्रम भेजना चाहिए। शुरुआती दिनों में मेरे साथ हुआ।:)

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