2012-06-11 22 views
5

tengo el siguiente código ..¿Cómo funciona Arrays.asList (...). Contiene (...) funciona?

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");  
    }  
    } 

pero esto no va en el caso ..i condición no saben dónde estoy saliendo mal .. Gracias de antemano ..

+1

Becuase una cadena con ' "0"' no es lo mismo que un número entero que es '0'. De hecho '(Largo) 0L',' (Entero) 0) 'y' (Doble) 0.0' no son lo mismo. –

Respuesta

10

sea cambiando la condición if a

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

o cambiar su matriz para

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

Gracias amigo ... Funcionó :) –

7

Eres comparando cadenas y enteros. Su matriz contiene cadenas ("0", "6"), pero está pasando un int en la comparación.

Eso int será boxed a un entero, sino un Integer(1) no es igual a "1"

3

que está comparando manzanas y naranjas (en este caso String s y Integer s).

Usted está convirtiendo una matriz de String en List. Luego llama al con un valor de int. Como el método toma Object como el tipo de parámetro, el int se autocaptúa en un Integer.

Con el fin de solucionar este problema, escribir:

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

Usted necesita tener una matriz int para ser capaz de hacer tal comparación.

cambiar esta situación:

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

a

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

Sólo cambia a Integer[] weekEnds={0,6}; y creo, que va a funcionar.