如何将整数数组转换为向量?

时间:2013-01-10 06:18:32

标签: java

我正在尝试将一个输入的整数数组转换为一个向量,然后输出结果。我搜索过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));

3 个答案:

答案 0 :(得分:3)

问题是,您的数组不是Integer[]而是int[],而java无法在这两种类型之间进行转换。

您可以将int替换为Integer,或将int[]中的值复制到新的Integer[](使用其他循环)并将其输入到向量中。

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

BTW,错误消息给出了提示:

  

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

您希望使用构造函数Vector<Integer>(List<Integer>),而Java决定从错误消息中查找该构造函数。

答案 1 :(得分:1)

问题是你有一个基本类型(int)数组,它与Arrays.asList()不兼容。 Arrays.asList(vecArray)实际上返回带有一个元素(您的数组)的List<int[]>

最简单的解决方法是手动填充矢量:

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

答案 2 :(得分:0)

您的vecArray应该是Integer类型,而不是原始int

Integer [] vecArray = new Integer[vecSize];