0

コンソールからデータを入力してリストに追加する簡単な例を試してみます。ただし、入力された姓、年齢の値は、リスト内で繰り返されます。

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

リストの内容: [john 22,john 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;
    }
}
4

4 に答える 4

2

Create new User in a for loop.

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;
}
于 2012-09-12T07:01:01.047 に答える
1

Userこれは、反復ごとに更新し続けるのインスタンスを 1 つしか作成していないためです。事実上、最後の反復に関連するデータを使用して同じインスタンスを追加することになります。そのループ内に新しいUserインスタンスを作成してみてください。for

于 2012-09-12T07:01:31.140 に答える
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);
}
于 2012-09-12T07:01:31.427 に答える
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;

}
于 2012-09-12T07:08:03.850 に答える