如何在静态main方法中将数据添加到arraylist中

时间:2016-02-18 08:33:18

标签: java arraylist static

我尝试从文本文件中读取数据并将数据添加到元素为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);
        }
    }
}

文本文件中的数据如图所示,而每个元素的结果都相同。

enter image description here

1 个答案:

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

否则,您只需重复将相同的数组添加到列表中,这意味着您将覆盖元素。

将项添加到列表中不会复制它:它只是将对项的引用添加到列表中。因此,对该项目的后续更改将反映在列表中的项目中。