0

编辑:我正在尝试将从 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!全部固定。

4

3 回答 3

0
int line= null; is wrong,

“null 是一个特殊的文字,可以是任何对象引用类型”。你不能像(int,byte,float...)null那样primitive variables在 java 中赋值。null can only be assigned to objects . remember thatnullis the default vale for对象`,当您不初始化它们时。

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

Integer line= null;//nowthis would compile

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

List.toArray(T[] t) 方法返回一个对象。像下面这样。

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

而且您的 List 接受 int[] 数组,并且您正在尝试将 int 添加到 list 中。

像这样更改您的列表声明

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

要打印数组中的元素,您必须对其进行迭代

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

你似乎是java的初学者。强烈建议您在这里阅读有关 java 基础的信息

于 2012-11-01T22:55:55.907 回答
0

两个主要问题。

  • 您不能分配nullint. null是一个指针值,intJava 中的 s 总是按值处理,而不是按引用。对象可以是null,原始值如intdouble不能。

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

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

这应该可以编译您的代码,但它不会涉及其他验证问题以及您在任何时候输入时都必须担心的问题......但现在我只是假设您已经已经审查了输入文件。

于 2012-11-01T23:09:36.470 回答
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);
于 2021-03-10T19:39:26.420 回答