2013-05-08 3 views
-3
나는이 같은 수치 포함하는 하나 개의 목록이

: 내가 처음 2의 인덱스를 갖고 싶어list.indexOf (수치) -1을 반환

1 
1 
1 
2 
2 
2 

을, 내가 List.indexOf 사용 ("2") 하지만 -1을 반환합니다
이유가 무엇입니까?

답변

1

목록에 숫자가 저장되어있는 경우 indexOf 메서드에 문자열을 전달하므로 -1이 반환됩니다. indexOf 내부적 비교를 할 때

List<Integer> list = new ArrayList<Integer>(); 
list.add(1); 
list.add(2); 

list.indexOf("1");//returns -1 
list.indexOf(1);//returns 0 

그것은 고려 입력 얻어 지 어떤지를 체크한다.

1

"2"는 문자열이고 목록에는 정수가 포함되어 있습니다. List.indexOf(new Integer(2));

0

시도 귀하의 질문은 당신이 당신의 List 객체의 수치 데이터가 있다고 대신 이후 List.indexOf("2");

List.indexOf(2);를 사용하여, 당신은 대신 String의 숫자로 인수를 전달해야합니다보십시오. String의 형식으로 데이터를 저장하지 않으면 결과로 -1가 표시됩니다.

1

-1은 검색된 값이 목록에 없다는 것을 의미합니다.

정말 목록 문자열의 내용입니까?

0

문자열을 2로 검색하고 있습니다. 시도해보십시오 List.indexOf(2)

0

2를 "2"로 전달하십시오. 그것은 String으로 간주합니다. 목록에서 데이터를 가져 오려면 List.indexOf (new Integer (2))와 같이 전달하십시오. 또는 List.indexOf (새 정수 (임의의 숫자));

0

Katja가 말한 것처럼 목록에서 잘못된 유형 (문자열)을 찾고있을 것입니다 (나는 정수의 목록이라고 가정합니다).

List<Integer> list = new ArrayList<Integer>(); 

list.add(1); 
list.add(2); 

System.out.println(list.indexOf("1")); 
System.out.println(list.indexOf(1)); 

출력 :

-1 
0 

아래의 예를 참조하십시오

관련 문제