将int数组列表转换为int数组

时间:2012-11-01 22:54:24

标签: arrays arraylist int java.util.scanner

编辑: 我试图将从txt文档中读取的元素逐行添加到数组列表中,然后将该数组列表转换为数组。虽然我的代码出错了。它不喜欢int [] a = lines.toArray(new int [lines.size()]);.

import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class insertionSort {

public static void main(String[] args) {
    List<Integer> lines = new ArrayList<Integer>();
    File file = new File("10_Random.txt");

    try {

        Scanner sc = new Scanner(file);
        //int line = null;

        while (sc.hasNextLine()) {
            int i = sc.nextInt();
            lines.add(i);
            //System.out.println(i);
        }
        sc.close();
    } 
    catch (FileNotFoundException e) {
        e.printStackTrace();
    }
    int[] a = lines.toArray(new int[lines.size()]);
}
}

Edit2:谢谢chaitanya10!全部修好了。

3 个答案:

答案 0 :(得分:0)

int line= null; is wrong,

“null是一个特殊的文字,可以是任何对象引用类型”。你不能将null分配给java中的primitive variables,如(int,byte,float ...)。当你没有初始化它们时null can only be assigned to objects . remember that null is the default vale for个对象。

如果您想将int作为对象访问,请使用Integer

Integer line= null;//nowthis would compile

并将列表转换为数组执行此操作。

List.toArray(T [] t)方法返回一个Object。 如下所示。

Integer[] array = lines.toArray(new Integer[lines.size()])

并且你的List接受int []数组,你可以尝试将int添加到列表中。

像这样更改你的列表声明

List<Integer> lines = new ArrayLis<Integer>();

要打印数组中的元素,必须迭代它

    for(int i=0; i<a.length;i++){
    system.out.println(a[i])
}

你似乎是java的初学者。强烈建议您here阅读有关java basic

的内容

答案 1 :(得分:0)

两个主要问题。

  • 您无法将null分配给intnull是一个指针值,Java中的int总是按值处理,而不是通过引用处理。对象可以是null,原始值如intdouble则不能。

  • ArrayList的类型声明错误。您分配它的方式,列表的每个元素应该是int的数组。我认为这不是你想要的 - 每个元素只有一个int值,因此列表作为一个整体类似于数组。

第二个子弹是你的第二个和第三个错误背后的原因,我认为如果你一直读到错误消息,你可能会看到它(这是一个TypeMismatch错误,对吧?)。将您的列表参数化为int[]后,add方法会将所有添加的内容都设置为int[]类型。但line只是int。类似地,toArray()方法返回列表参数化的任何类型的数组。由于您有一个数组列表,toArray()将返回一个数组数组。在这种情况下,它的返回类型为int[][],由于类型不匹配,因此无法将其分配给int[] a

这应该让您的代码进行编译,但它不会涉及其他验证问题,并且您无论何时输入都要担心...但是现在我只是假设你已经审查了输入文件。

答案 2 :(得分:0)

您可以使用 IntStream:

int[] arr = {15, 13, 7, 4, 1, 10, 0, 7, 7, 12, 15};
List<Integer> arrayList = IntStream.of(arr).boxed().collect(Collectors.toList());
System.out.println(arrayList);