2013-01-10 6 views
0

입력 된 정수 배열을 벡터로 바꾸고 결과를 출력하려고합니다. 나는 Google 검색 및 모든 예제에서는 "(Arrays.asList (randomArray)". 그러나 컴파일 할 때 "기호 - 생성자 Vector (java.util.list) 찾을 수 없습니다"올바른 코드 무엇입니까? ?정수 배열을 벡터로 바꾸려면 어떻게해야합니까?

Scanner inputNumber = new Scanner(System.in); 
System.out.println("How big would you like the vector to be?"); 
int vecSize = inputNumber.nextInt(); 
int [] vecArray = new int[vecSize]; 
int [] primeArray = new int[vecSize]; 
System.out.println("Please enter " + vecSize + " postive numbers please: "); 

for (int i = 0; i < vecSize; i++) { 
    int arrayInput = inputNumber.nextInt(); 
    if (arrayInput > 0){ 
    vecArray[i] = arrayInput; 
    } 
} 
Vector<Integer> arrayToVec = new Vector<Integer>(Arrays.asList(vecArray)); 
+1

왜 벡터를 사용하려고합니까? 동기화를 원하면'Collections.synchronizedList'를 사용하십시오. – zengr

+0

... 스레드 안전 동기화가 필요하지 않으면'ArrayList' 또는 그냥'Arrays.asList()'를 사용할 수 있습니다. –

답변

1

문제는 사용자가 정수형 배열 (int)을 가지고 있는데, 이는 Arrays.asList()과 잘 맞지 않습니다. Arrays.asList(vecArray)은 실제로 하나의 요소 (배열)를 사용하여 List<int[]>을 반환합니다.

가장 쉬운 수정 수동으로 벡터를 직접 채울 수 있습니다 :

Vector<Integer> arrayToVec = new Vector<Integer>(); 
for (int i : vecArray) { 
    arrayToVec.add(i); 
} 
+0

나는 그것이 가능하다는 것을 몰랐습니다! 대단히 감사합니다. – Jay

3

문제가 배열이 Integer[]하지만 int[]하지 않고, 자바는 두 종류의 사이에 변환 할 수있다 : 벡터에 배열을 변환

여기에 내 코드입니다.

Integer으로 대체하거나의 값을 복사 할 수 있습니다.을 새 루프 Integer[] (다른 루프가 있음)에 넣고 벡터에 공급합니다.

코드에서 마지막 문은 모든 int[] 개체를 벡터에 복사하려고하지만 자동으로받은 편지함에서 배열의 값을 복사합니다. 하지만 그렇지 않습니다.

BTW, 오류 메시지가 힌트 제공 : 생성자 Vector<Integer>(List<int[]>)

을 정의되지

대신 생성자 Vector<Integer>(List<Integer>)을 사용할 것으로 예상하고 자바는 오류 메시지에서 일을 찾아하기로 결정 .

0

귀하의 vecArray 대신 원시 int의 유형 Integer이어야한다.

Integer [] vecArray = new Integer[vecSize]; 
관련 문제