我必须将文本文件读入整数数组,然后获取已存在的数组并使用新创建的数组填充它。
现在我已将文本文件读入Integer数组,但无法弄清楚如何更改现有数组,使其与新创建的数组完全相同。
以下是我的代码:
public static void loadGrades(int list[]) {
File f = null;
Scanner scan = null;
try{
f = new File("Proj5Data.txt");
scan = new Scanner(f);
}
catch(Exception e){
System.exit(0);
}
ArrayList<Integer> grades = new ArrayList<Integer>();
//Assuming you know all your data on the file are ints
while(scan.hasNext())
grades.add(scan.nextInt());
System.out.println(grades);
for (int i = 0; i < list.length; i++)
list[i] = 1;
}
答案 0 :(得分:0)
你的问题(或更像是不好的做法)是你混合了列表和数组的想法 - 这显然是不一样的。
只是解释一下,您使用grades
作为ArrayList,而不是数组。在扫描while循环中的整数时可以执行的操作:
int i = 0; // initialise your array index earlier (assuming you have declared your "list" array somewhere beforehand
while(scan.hasNext())
{
int p = scan.nextInt();
grades.add(p);
list[i++]=p;
}
同样,我假设你的代码片段已经在某个地方声明了你的list
数组。
只需改进您的代码段:
List<Integer> grades = new ArrayList<Integer>(); // List object with ArrayList impl.
//Assuming you know all your data on the file are ints
while(scan.hasNext())
grades.add(scan.nextInt());
System.out.println(grades);
Integer[] n_array = new Integer[grades.size()]; // create the new array
grades.toArray(n_array); // Fill it up
顺便说一下......如果你的新数组类型是Integer
,即引用类型,这个toArray()就行了。对于像int
这样的原语,你需要使用传统方法,例如
int i = 0;
for (int x: grades)
n_array[i++] = x;
答案 1 :(得分:0)
假设您现有的数组有足够的空间来分配从文件中读取的所有整数,这个解决方案就可以工作。
private void loadGrades(int[] list) throws IOException{
ArrayList<Integer> grades = new ArrayList<Integer>();
Scanner scanner = new Scanner(new File("Proj5Data.txt"));
while(scanner.hasNextInt()){
grades.add(scanner.nextInt());
}
for (int i : list) {
list[i] = grades.get(i);
}
}