2012-06-11 26 views
5

Tôi có đoạn code sau ..Cách Arrays.asList (...). Contains (...) hoạt động?

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

nhưng nó không đi sâu vào nếu ..Tôi tình trạng không biết nơi im đi sai .. Cảm ơn trước ..

+1

bởi vì một String với ' "0"' là không giống như một Integer là '0'. Thực tế '(Long) 0L',' (Số nguyên) 0) 'và' (Đôi) 0.0' không giống nhau. –

Trả lời

10

Hoặc thay đổi tình trạng if để

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

Hoặc thay đổi mảng của bạn để

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

Thanks dude..It works :) –

7

Bạn so sánh Strings và ints. Mảng của bạn chứa các chuỗi ("0", "6"), nhưng bạn đang chuyển một số int vào so sánh.

Đó int sẽ boxed đến một Integer, nhưng một Integer(1) không bằng "1"

3

Bạn đang so sánh táo và cam (trong trường hợp này String s và Integer s).

Bạn đang chuyển đổi một mảng String thành một số List. Sau đó, bạn gọi trên đó với giá trị int. Vì phương thức lấy Object làm loại tham số, int được tự động chuyển vào một số Integer.

Để khắc phục điều này, hãy viết:

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

Bạn cần có một mảng int để có thể làm một so sánh như vậy.

Thay đổi này:

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

để

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

Chỉ cần thay đổi để Integer[] weekEnds={0,6}; và tôi nghĩ rằng, nó sẽ làm việc.

Các vấn đề liên quan