编辑: 我试图将从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!全部修好了。
答案 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
分配给int
。 null
是一个指针值,Java中的int
总是按值处理,而不是通过引用处理。对象可以是null
,原始值如int
和double
则不能。
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);