arraylist和扫描器的正确语法

时间:2018-11-28 15:06:10

标签: java

String password;
String user;
ArrayList<User> Userlist = new ArrayList<User>();
Scanner input = new Scanner(System.in);

while (true) {
    System.out.println("enter username:");
    Userlist.add(user);
    user = input.nextline();

    System.out.println("enter password:");
    Userlist.add(password);
    password = input.nextline();
}

我正在尝试使用扫描器将2个字符串(用户名和密码)保存到ArrayList中。我只想知道正确的语法。

2 个答案:

答案 0 :(得分:1)

您正在尝试创建一系列用户,因此您需要首先创建一个用户对象:

while (true) {
        System.out.println("enter username:");
        userName = input.nextline();
        System.out.println("enter password:");
        password = input.nextline();
        User user = new User(userName, password); //keep in mind this required an apporopriate constructor in the User class
        Userlist.add(user);
}

答案 1 :(得分:0)

这里有几个错误。首先,您无法将在控制台中输入的内容分配为User类型。首先创建这样的对象,或者切换到String。另外:将字符串添加到列表的顺序是错误的。您需要先阅读输入内容,然后然后将其添加到列表中。最后,甚至没有nextline这样的方法,实际上是nextLine。话虽如此,以下是两种解决您的问题的方法:

  • 使用类型User并设置适当的构造函数:

    class User {
      String user; String password;
      User(String user, String password) {
        this.user = user; this.password = password;
      }
    }
    

    ,相应的代码为:

    String password; String user;
    ArrayList<User> userlist = new ArrayList<>();
    Scanner input = new Scanner (System.in);
    while (true)
    {
      System.out.println("enter username:");
      user = input.nextLine();
    
      System.out.println("enter password:");
      password = input.nextLine();
    
      userlist.add(new User(user, password));
    }
    
  • 只需将所有内容放入一个列表中,其通用类型应为String

    String password; String user;
    ArrayList<String> userlist = new ArrayList<>();
    Scanner input = new Scanner (System.in);
    
    while (true)
    {
        System.out.println("enter username:");
        user = input.nextLine();
        userlist.add(user);
    
        System.out.println("enter password:");
        password = input.nextLine();
        userlist.add(password);
    }