2012-06-11 5 views
5

Ich habe den folgenden Code ..Wie funktioniert 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");  
    }  
    } 

aber es ist nicht das gehen in, wenn die Bedingung ..i weiß nicht, wo falsch im going .. Vielen Dank im Voraus ..

+1

Becuase einen String mit ' "0"' ändern, ist nicht das gleiche wie eine ganze Zahl '0' ist. Tatsächlich sind "(Long) 0L", "(Integer) 0" und "(Double) 0.0" nicht gleich. –

Antwort

10

Entweder die if Bedingung

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

zu

ändern oder Ihr Array

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

Danke dude..Es hat funktioniert :) –

7

Du bist Strings und Ints vergleichen. Ihr Array enthält Strings ("0", "6"), aber Sie übergeben ein int in den Vergleich.

Die int boxed auf eine ganze Zahl sein wird, aber ein Integer(1) nicht gleich "1"

3

Sie sind Äpfel und Orangen (in diesem Fall String s und Integer s) zu vergleichen.

Sie konvertieren ein Array von String in ein List. Dann rufst du darauf mit einem int Wert an. Da die Methode Object als Parametertyp verwendet, wird die int in eine Integer autoboxed.

Um dies zu beheben, schreiben:

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

Sie benötigen ein int-Array müssen in der Lage sein, einen solchen Vergleich zu tun.

ändern diese:

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

zu

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

Ändern Sie einfach zu Integer[] weekEnds={0,6}; und ich denke, es wird funktionieren.

Verwandte Themen