2015-03-23 4 views
5

क्योंकि शून्य पर रीसेट करने के लिए वहां कोई सुलभ काउंटर या i नहीं है।क्या आप प्रत्येक लूप के काउंटर को रीसेट कर सकते हैं?

क्या यह प्राप्त करने के लिए continue या break के साथ खेलने का कोई तरीका है?

class CommandLine { 
    public int[] sort(int array[]) { 
    int temp; 
    for (int i=0; i<array.length-1; i++) {//must have used for-each 
      if (array[i] > array[i+1]){ 

       temp = array[i]; 
       array[i] = array[i+1]; 
       array[i+1] = temp; 
       i=-1; 

      }//if end 
    }//for end 

    return array; 

    }//main end 
}//class end 
+3

नियमित लूप का उपयोग क्यों नहीं करते? –

+0

मुझे प्रत्येक लूप – James

+0

के साथ एक सॉर्टिंग एल्गोरिदम लिखने के लिए कहा गया है क्या आप सॉर्टिंग एल्गोरिदम चुनने के लिए स्वतंत्र हैं? – dhke

उत्तर

2

आम तौर पर, ऐसा करने का कोई तरीका नहीं है: इटरेटर है कि करने के लिए "ड्राइव" for-each पाश छिपा हुआ है इस्तेमाल किया है, तो आपके कोड के पास इसका कोई उपयोग नहीं है।

बेशक आप एक संग्रह-जैसी कक्षा बना सकते हैं जो सभी इटरेटर को संदर्भित करता है जो इसे बनाता है, और आपको "तरफ" रीसेट करने देता है। हालांकि, यह एक हैक के रूप में योग्यता है, और इससे बचा जाना चाहिए।

यदि आपको अपने पुनरावृत्ति की स्थिति को किसी विशिष्ट स्थान पर रीसेट करने का कोई तरीका चाहिए, तो नियमित for लूप का उपयोग करें।

1

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

for (int i = 0; i < myCollection.size(); i ++) { 
    // do something 
} 

अधिक जानकारी: Is there a way to access an iteration-counter in Java's for-each loop?

+0

कृपया इसे 'myArray' न कहें जब वास्तव में यह 'संग्रह' है। यह कुछ उलझन में है। – dhke

+1

संकेत के लिए धन्यवाद, इसे ठीक करें। – flogy

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