2012-09-12 25 views
0

嘗試一個簡單的示例,其中我通過控制檯輸入數據並將它們添加到列表中。但姓氏的價值,所輸入的年齡在列表中重複出現。通過BufferedReader檢索數據後在列表中重複值

private List<User> getData() throws IOException{ 
    User user=new User(); 
    List<User> userList=new ArrayList<User>(); 
    BufferedReader reader=new BufferedReader(new InputStreamReader(System.in)); 
    for(int i=0;i<2;i++){ 
     System.out.println("Enter name,age:"); 
     String values=reader.readLine(); 
     String[] value=values.split(","); 
     user.setName(value[0]); 
     user.setAge(value[1]); 
     userList.add(user); 
    } 
    return userList; 

} 

在打印userList時,似乎列表中填充了我通過控制檯輸入的最終值。 例,

輸入姓名,年齡:rickesh,22 輸入姓名,年齡:列出的john,21

內容:約翰·22,約翰22]

public class User { 
    private String age; 
    private String name; 

    public String getAge() { 
     return age; 
    } 
    public void setAge(String age) { 
     this.age = age; 
    } 
    public String getName() { 
     return name; 
    } 
    public void setName(String name) { 
     this.name = name; 
    } 
} 
+0

看來,我在我的基本Java技能**。 :( –

回答

2

創建循環在新的用戶。

private List<User> getData() throws IOException{  
List<User> userList=new ArrayList<User>(); 
BufferedReader reader=new BufferedReader(new InputStreamReader(System.in)); 
for(int i=0;i<2;i++){ 
    System.out.println("Enter name,age:"); 
    String values=reader.readLine(); 
    String[] value=values.split(","); 
    User user=new User(); 
    user.setName(value[0]); 
    user.setAge(value[1]); 
    userList.add(user); 
} 
return userList; 
} 
1

這是因爲您只創建了User的一個實例,您在每次迭代時都會更新這個實例。實際上你最終會在最後一次迭代中添加相同的實例。嘗試在for循環內創建新的User實例。

0

移動指令:

User user=new User(); 

for循環,如下所示:

for(int i=0;i<2;i++){ 
    User user=new User(); 
    System.out.println("Enter name,age:"); 
    String values=reader.readLine(); 
    String[] value=values.split(","); 
    user.setName(value[0]); 
    user.setAge(value[1]); 
    userList.add(user); 
} 
0

創建新的用戶對象在for循環您的問題將得到解決:

private List<User> getData() throws IOException{ 
     User user=null; 
    List<User> userList=new ArrayList<User>(); 
    BufferedReader reader=new BufferedReader(new InputStreamReader(System.in)); 
    for(int i=0;i<2;i++){ 
     user =new User();//create new user here 
     System.out.println("Enter name,age:"); 
     String values=reader.readLine(); 
     String[] value=values.split(","); 
     user.setName(value[0]); 
     user.setAge(value[1]); 
     userList.add(user); 
    } 
    return userList; 

} 
相關問題