java—向arraylist中添加之前的所有数据时出现问题

fiei3ece  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(302)

我试图读取double的文件(81个文件),并将每个文件(16个double/file)放在double[]上,然后创建一个objet dataobject(double[],int class),我想将创建的每个dataobject示例添加到我的arraylist中,但最后,我的arraylist中有81个相同的元素,这是我读取的最后一个文件上的数据,我需要帮助。谢谢。`public static void main(string[]args){bufferedreader reader;

while (x <= 9){
        try{
            reader = new BufferedReader(new FileReader("C:\\Users\\pc\\Documents\\NetBeansProjects\\RF\\src\\E34\\s0"+x+"n00"+y+".E34"));
            String line= reader.readLine();       
            while(line !=null){
                try{
                    d[i] = Double.valueOf(line);
                    System.out.println(d[i] + " is a double.");
                    i++;  
                }catch(NumberFormatException e){
                    System.err.println("Not Double ' "+line+" '");
                }
                line=reader.readLine(); 
            }
        }catch(Exception ex){
            System.err.println(ex.getMessage());
        } 
        // AJOUT DE L'OBJET**************************************************************************
        obj = new DataObject(d, x);
        list.add(obj);
        System.out.println("objet ajouté");
        // REINITIALISATION du tableau d**********************************************************
        i = 0;
        y++;
        // CONDITION SUR LES FICHIER A LIRE***********************************************************
        if(y == 10){
            x++; y = 1;
        }
    }
    // LECTURE DES DONNEE*****************************************************************
    for(int n = 0; n < list.size(); n++){
        System.out.println(list.get(n).toStringObj());
    }`

类dataobject`公共类dataobject{private double[]data;私有int类代码;

public DataObject(double[] data, int classCode) {
   //assert data.length == 100; //maximum array length of 100
   this.data = data;
   this.classCode = classCode;
}

public String toStringObj() {
       return "Class Code: " + classCode + " Data :" + Arrays.toString(data) + "\n"; //outputs readable
}

public double[] getData() {
       return data;
}

public int getClassCode() {
       return classCode;
}

}`
这是输入图像描述的结果
81行相同的数据,但类代码不是由9替换的。

t9aqgxwy

t9aqgxwy1#

谢谢各位,我在调用dataobject时找到了解决方案 obj = new DataObject(d, x); 他总是用同样的方法打电话 d ,这就是为什么我有同样的结果,我尝试了 obj = new DataObject(d.clone(), x); 而且很有效。

相关问题