【问题标题】:Converting an int array list to an int array将 int 数组列表转换为 int 数组
【发布时间】:2012-11-01 22:54:24
【问题描述】:

编辑: 我正在尝试将从 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!都修好了。

【问题讨论】:

    标签: arrays arraylist int java.util.scanner


    【解决方案1】:
    int line= null; is wrong,
    

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

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

    Integer line= null;//nowthis would compile
    

    并将列表转换为数组。

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

    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 的初学者。强烈推荐你hereread about java basic

    【讨论】:

    • 写了这个“int[] a = lines.toArray(new int[lines.size()]);”并且我收到一条错误消息,希望遇到 o 删除参数以将其更改为 .toArray()。也它仍然不喜欢lines.add(i);
    • 好的,解决了我的lines.add问题,现在我需要修复这个“int[] a = lines.toArray(new int[lines.size()]);” :-)
    • 你太棒了我的朋友 :-)
    • 哦!你能帮我做点别的吗?我尝试将列表打印出来,并得到“[Ljava.lang.Integer;@452c0b3f”作为输出。我把“System.out.println(a);”在 Integer[] 下一个.....的东西。
    【解决方案2】:

    两个主要问题。

    • 您不能将null 分配给intnull 是指针值,Java 中的ints 总是按值处理,而不是按引用处理。对象可以是null,像intdouble 这样的原始值不能。

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

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

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

    【讨论】:

      【解决方案3】:

      您可以使用 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);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-26
        • 2022-07-07
        • 1970-01-01
        • 2018-05-11
        相关资源
        最近更新 更多