2010-03-31 34 views
6

Chỉ mục đầu tiên được đặt thành rỗng (trống), nhưng nó không in đúng đầu ra, tại sao?Tại sao không list.get (0) .equals (null) hoạt động?

//set the first index as null and the rest as "High" 
String a []= {null,"High","High","High","High","High"}; 

//add array to arraylist 
ArrayList<Object> choice = new ArrayList<Object>(Arrays.asList(a)); 

for(int i=0; i<choice.size(); i++){ 
    if(i==0){ 
     if(choice.get(0).equals(null)) 
      System.out.println("I am empty"); //it doesn't print this output 
    } 
} 
+1

Bí quyết: 'System.out.println (Arrays.asList (null," High "," High "," High "," High "," High "));' thực hiện những gì bạn muốn mà không cần tất cả mã phụ. Tôi nói của nó "giống nhau" bởi vì bạn có thể không biết bạn có thể in nulls – Pyrolistical

Trả lời

6

Tôi tin rằng những gì bạn muốn làm là thay đổi,

if(choice.get(0).equals(null)) 

để

if(choice.get(0) == null)) 
+0

Cảm ơn bạn :-) rất nhiều. – Jessy

+0

Không vấn đề gì, hãy xem câu trả lời của cletus để biết thêm lý do tại sao nó không hoạt động như mong đợi. –

6

Bạn muốn:

for (int i=0; i<choice.size(); i++) { 
    if (i==0) { 
    if (choice.get(0) == null) { 
     System.out.println("I am empty"); //it doesn't print this output 
    } 
    } 
} 

Khái niệm choice.get(0).equals(null) nên ném một NullPointerExceptionchoice.get(0)null và bạn thử gọi một hàm trên đó. Vì lý do này, anyObject.equals(null) sẽ luôn trả lại false.

+0

cảm ơn bạn rất nhiều :-) – Jessy

+0

Trong khi trả lại giá trị true cho 'bằng (null)' vi phạm hợp đồng API, thực tế là rất có thể. –

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