2013-01-10 55 views
0

我想将输入整数的数组转换为向量,然后输出结果。我搜索谷歌和每个例子使用“(Arrays.asList(randomArray)”。但是,当我尝试编译我得到一个“无法找到符号 - 构造函数向量(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[],和java不能这两种类型之间的转换。

您可以将int替换为Integer,也可以将中的值更新为Integer[](使用另一个循环)并将其输入到矢量中。

在您的代码中,最后一条语句尝试将所有int[]对象复制到向量中,但是您希望它会自动收件箱并复制数组中的值。但事实并非如此。

BTW,错误消息给出了一个暗示:

构造Vector<Integer>(List<int[]>)未定义

您希望使用构造Vector<Integer>(List<Integer>),而不是和Java决定找错误消息中的一个。

0

vecArray应该代替原始intInteger类型。

Integer [] vecArray = new Integer[vecSize];