ArrayList方法添加错误

use*_*234 2 java

错误是客户具有不同的ID,但在ArrayList类的readCustomer对象中,唯一保存的ID是最后一个客户的ID.

//reads customer data from register.txt file
//has 2 string as arguments
//returns a ArrayList object with all the customer with the same name

public ArrayList<Customer> readCustomer(String name,String surname){

    Customer temp = new Customer();

    //will hold all the customers with the same name and surname
    ArrayList<Customer> readCustomer = new ArrayList<Customer>();        

    try{
        FileInputStream fstream = new FileInputStream("register.txt");
        BufferedReader fbr = new BufferedReader(new InputStreamReader(fstream));
        String strLine;
        while ((strLine = fbr.readLine()) != null)   {

            String line[];
            line = strLine.split(" ");                
            if(name.equals(line[1]) && surname.equals(line[2])){

                temp.setCustomerID(Integer.parseInt(line[0]));
                temp.setName(line[1]);
                temp.setSurname(line[2]);
                temp.setAddress(line[3]);
                temp.setAge(Integer.parseInt(line[4]));                    
                readCustomer.add(temp);                   

            }
        }
        fbr.close();
    }
    catch(Exception ex){*emphasized text*
        System.out.println(ex.getMessage());            
    }    

    return readCustomer;        
}
Run Code Online (Sandbox Code Playgroud)

Smu*_*tje 5

在每次迭代时创建一个新对象,而不是一个可以逐渐填充的对象.另外,学习理解对象引用.

while ((strLine = fbr.readLine()) != null)   {
    Customer temp = new Customer();

    // and so on
Run Code Online (Sandbox Code Playgroud)