लूप आरंभीकरण के लिए एक चर घोषित क्यों किया जाना चाहिए?


11
int v = 0;

for (v; v<2; v++) {
    ...

}

जावा में इसकी अनुमति क्यों नहीं है?

हमें vलूप इनिशियलाइज़ेशन के लिए वेरिएबल की घोषणा क्यों करनी है? मुझे पता है कि यह एक बयान नहीं है अगर मैं इसे पसंद करता हूं, लेकिन जावा उपरोक्त की अनुमति क्यों नहीं देता है?


हम नहीं; for(;;)
देहाती

3
vअनुमति नहीं है क्योंकि यह एक कथन नहीं है: यह वही कारण है जो आप v;स्वयं कहीं और नहीं लिख सकते हैं।
एंडी टर्नर

एक बढ़ाया लूप के लिए आपको इसकी आवश्यकता नहीं हैfor
अरविंद कुमार अविनाश

जवाबों:


14

यदि vलूप से पहले घोषित किया जाता है, तो आपको स्टेटमेंट के पहले भाग को खाली छोड़ देना चाहिए:

int v = 0;

for (; v < 2; v++) {
    ...
}

सिर्फ लिखने का कोई अर्थ नहीं है v;


6

यदि आप vघोषणा में बाहरी को हटा देते हैं तो आपका लूप डिक्लेरेशन मान्य है (यह मानकर vपहले ही घोषित कर दिया गया था)

इसे बदलें for(; v < 2; v++)

पारंपरिक forलूप के सभी तीन संशोधक जावा में वैकल्पिक हैं।

वैकल्पिक उदाहरण:

नीचे एक while (true)लूप के समान है :

for (;;) {

}

अतिरिक्त वेतन वृद्धि जोड़ना:

int j = 0;
for (int k = 0; k < 10; k++, j++) {

}

लूप को समाप्त करने के लिए अतिरिक्त शर्तें जोड़ना:

int j = 0;
for (int k = 0; k < 10 || j < 10; k++, j++) {

}

एक ही प्रकार के बहुविकल्पी घोषित करना :

for (int k = 0, j = 0; k < 10 || j < 10; k++, j++) {

}

और जाहिर है कि आप इनमें से किसी को भी मिक्स एंड मैच कर सकते हैं, जैसा कि आप चाहते हैं, पूरी तरह से छोड़ दें।


3

जावा डॉक के अनुसार

कथन का सामान्य रूप निम्नानुसार व्यक्त किया जा सकता है:

for (initialization; termination; increment) {
    statement(s)
}

...

लूप के लिए तीन अभिव्यक्तियाँ वैकल्पिक हैं

इसका मतलब है कि आप forलूप बना सकते हैं और 3 में से कुछ को खाली छोड़ सकते हैं । विकल्पों में int vसे एक लूप से पहले घोषित किया जाता है :

int v = 0;
for(; v<2; v++)

1

आप में एक चर घोषित करने की जरूरत नहीं है ForInit

जैसा कि दूसरों ने बताया है, आप बस इसे छोड़ सकते हैं ForInit; लेकिन आप वहां पर स्टेटमेंट एक्सप्रेशन की एक सूची का भी उपयोग कर सकते हैं।

उदाहरण के लिए, आप नए क्लास इंस्टेंसेस बना सकते हैं, विधियाँ लागू कर सकते हैं और असाइनमेंट / इंक्रीमेंट / डेसिमेंट वेरिएबल्स:

int v;
for (new String(), "".toString(), v = 0, v++;;);

(यह उदाहरण निरर्थक है, लेकिन कानूनी है)

हालाँकि, आप स्थानीय चर घोषणाओं के साथ इन कथन अभिव्यक्तियों को नहीं मिला सकते हैं।


0

एक बढ़ाया forलूप के लिए आपको इसकी आवश्यकता नहीं है ।

public class Main {
    public static void main(String[] args) {
        int[] integers = { 10, 20, 30 };
        for (int x : integers) {
            System.out.println(x);
        }
    }
}

0

int w = 0;

टी वी में;

के लिए (v; v <2; v ++) {

} आपने v को लूप से पहले घोषित किया है लेकिन आपने फिर से बिना किसी इनिशियलाइज़ेशन के उपयोग किया है।

यदि आप w का उपयोग करते हैं जो पहले से ही घोषित है और पहले से आरंभिक है तो कोई समस्या नहीं होगी। कोड के नीचे,

के लिए (; w <2; w ++) {

}

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.