我尝试从文本文件中读取数据并将数据添加到元素为7位数组的arraylist中。但是,arraylist的所有元素总是转向上次读取的值,这意味着最后读取的数据将替换列表中的所有元素。 我想原因可能是必须在main方法中调用函数,这是静态的。如何成功添加数据?
package main;
import java.util.Locale;
import java.util.Scanner;
import javax.swing.JFileChooser;
import java.util.ArrayList;
import java.io.*;
public class readFile {
public static void main(String args[]){
read();
}
public void read()throws Exception{
Scanner input = new Scanner(new File("./src/sample.txt"));
input.useLocale(Locale.US);
double[] temp = new double[7];
ArrayList<double[]> pointList= new ArrayList<double[]>();
while(input.hasNext()){
for (int i=0;i<=6;i++)
{
temp[i]=input.nextDouble();
}
pointList.add(temp);
}
}
}
文本文件中的数据如图所示,而每个元素的结果都相同。
答案 0 :(得分:4)
在while循环中移动temp
的声明:
ArrayList<double[]> pointList= new ArrayList<double[]>();
while(input.hasNext()){
double[] temp = new double[7];
for (int i=0;i<7;i++) // Don't make it more confusing by using "6" here.
{
temp[i]=input.nextDouble();
}
pointList.add(temp);
}
否则,您只需重复将相同的数组添加到列表中,这意味着您将覆盖元素。
将项添加到列表中不会复制它:它只是将对项的引用添加到列表中。因此,对该项目的后续更改将反映在列表中的项目中。