2012-06-11 13 views
5

मैं निम्नलिखित कोड ..कैसे Arrays.asList (...)। (...) काम करता है?

String[] weekEnds={"0","6"}; 

    for(int i=0;i<7;i++){ 

    if(Arrays.asList(weekEnds).contains(i)){ 

    System.out.println("I am in the array");  
    }  
    } 

लेकिन इसकी में नहीं जा रहा हालत ..i न पता है अगर जहां im गलत हो रहा .. अग्रिम धन्यवाद ..

+1

करने के लिए अपने सरणी बदल" 0 "' नहीं एक पूर्णांक जो है '0' के समान है। वास्तव में '(लांग) 0 एल',' (इंटीजर) 0) 'और' (डबल) 0.0' समान नहीं हैं। –

उत्तर

10

या तो

if(Arrays.asList(weekEnds).contains(String.valueOf(i))){ 

करने के लिए बदल if हालत या साथ `एक स्ट्रिंग क्योंकि

Integer[] weekEnds={0,6}; 
+0

धन्यवाद दोस्त .. यह काम किया :) –

7

तुम स्ट्रिंग्स और इंट्स की तुलना करना। आपके सरणी में स्ट्रिंग्स ("0", "6") शामिल हैं, लेकिन आप तुलना में एक int पास कर रहे हैं।

पूर्णांक एक पूर्णांक के लिए boxed हो जाएगा कि है, लेकिन एक Integer(1) बराबर नहीं "1"

3

आप (इस मामले में String और Integer रों) सेब और संतरे की तुलना कर रहे हैं।

आप String की एक सरणी को List में परिवर्तित कर रहे हैं। फिर आप पर int मान के साथ कॉल करते हैं। चूंकि विधि पैरामीटर प्रकार के रूप में Object लेती है, intInteger में स्वतः जुड़ जाती है।

आदेश इसे ठीक करने के लिए, लिखें:

if(Arrays.asList(weekEnds).contains("" + i)) { 
3

आप किसी पूर्णांक सरणी इस तरह के एक तुलना करने के लिए सक्षम होने के लिए की आवश्यकता है।

बदलें इस:

String[] weekEnds={"0","6"}; 

int[] weekEnds = {0,6}; 
0

को बस Integer[] weekEnds={0,6}; को बदल सकते हैं और मुझे लगता है कि यह कारगर होगा।