将文本读入整数数组然后将现有数组与其匹配

时间:2015-03-29 00:10:49

标签: java arrays

我必须将文本文件读入整数数组,然后获取已存在的数组并使用新创建的数组填充它。

现在我已将文本文件读入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;
}

2 个答案:

答案 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);
    }
}