被覆盖的数组的内容

时间:2017-02-15 17:15:20

标签: java arrays arraylist

请原谅我,因为我对这一切都是新手。 我的代码读取数字和名称的文本文件。每个名称后面有3组数字,每组3个被放入一个数组中。当数组被发送到循环中的另一个类时,数组的内容会被覆盖,我假设是因为它只是引用数组的地址,而不是实际值。

        public void readMarksData(String fileName) throws FileNotFoundException
{
    File dataFile = new File(fileName);
    Scanner scanner = new Scanner(dataFile);

    int[] marks = new int[3];
    scanner.nextLine();

    int i = 0;
    while( scanner.hasNext() )
    {
        String studentName = scanner.nextLine();
        while(i < 3)
        {
            try
            {
                marks[i] = scanner.nextInt();
                i++;
            }
            catch ( InputMismatchException ex )
            {
                i=0;
            }
        }
        scanner.nextLine();
        storeStudentRecord(studentName, marks);
        //scanner.nextLine();
        i=0;
    }
    scanner.close();
}

将值存储在另一个类中的代码

    private void storeStudentRecord(String name, int[] marks)
{
    //int[] x = new int[3]
    StudentRecord student = new StudentRecord(name, marks);
    marksList.add(student);
}

其他类

中的构造方法
    public StudentRecord(String nameInput, int[] marksInput)
{
    // initialise instance variables
    name = nameInput;
    noOfMarks = 0;
    marks = marksInput;
}

这让我疯了几个小时,所以任何帮助都会非常感激,谢谢。

1 个答案:

答案 0 :(得分:0)

您可以修改构造函数,以便创建数组的副本并使用它:

public StudentRecord(String nameInput, int[] marksInput)
{
    // initialise instance variables
    name = nameInput;
    noOfMarks = 0;
    if(marksInput!=null)
     marks = Arrays.copyOf(marksInput, marksInput.length);
    else
     marks = null;
}