2013-09-03 9 views
0

У меня есть этот кусок кода:как сравнить целое число от ArrayList

public static ArrayList type = new ArrayList<Integer>(); 

///////////some code////////// 

    System.out.println(normalization.type.get(i)); 
    System.out.println(normalization.type.get(i) == "1"); 

это дает мне выход

1 
false 

Я попытался одиночные кавычки и равно методы, до сих пор не соответствует , Любые идеи?

+0

Используйте 'equals' вместо' '==. –

+1

Конечно, не с '" 1 "'. –

+0

И удалите двойные кавычки. это целочисленное значение, а не строка. – CPerkins

ответ

0

Вы сравниваете Integer к String

normalization.type.get(i) == "1" 

"1" является строкой и типа имеет целые числа в нем.

Использование:

normalization.type.get(i).equals(1) 
1

Integer является объектом, так что вы должны использовать метод equals.

Кроме того, "1" является строка, поэтому он не может быть равна целому числу 1 Вы должны сделать следующее:

System.out.println(normalization.type.get(i).equals(new Integer(1))); 

ИЛИ

System.out.println(normalization.type.get(i).equals(1)); 
+1

В принципе нет смысла использовать 'new Integer()'. Если что-либо, используйте статический метод Integer # valueOf() 'factory. –

+0

Я почти уверен, что последний переводит на первое. –

+0

Это работает. Благодаря :) – user2398101

0

Я полагаю, в качестве альтернативы, вы всегда можно было попытаться использовать Objects#equals(Object, Object), который вышел на Java 7. Следующий код напечатает true, если элемент с индексом i равен 1:

System.out.println(Objects.equals(normalization.type.get(i), 1));

Вот реализация для этого метода:

public static boolean equals(Object a, Object b) { 
    return (a == b) || (a != null && a.equals(b)); 
} 

Ваша проблема заключается в том, что вы пытаетесь сравнить Integer с String, который всегда будет возвращать false.

0

Вы сравниваете целое число со строкой. (Или символ, когда вы используете одиночные кавычки)

Try normalization.type.get (я) == 1

Смежные вопросы