Java 读取字符串并将其添加到ArrayList

Java 读取字符串并将其添加到ArrayList,java,string,arraylist,Java,String,Arraylist,我编写了一个程序,它有一个arraylist用户列表,因此它应该创建一个新用户并将用户名存储在arraylist中,或者从arraylist中选择一个现有用户。问题是,当我运行代码时,我可以选择一个选项,但当我想创建一个新用户时,我不能键入任何内容。为什么会发生这种情况?我如何解决 import java.util.ArrayList; import java.util.Iterator; import java.util.Scanner; public class Main { priva

我编写了一个程序,它有一个arraylist用户列表,因此它应该创建一个新用户并将用户名存储在arraylist中,或者从arraylist中选择一个现有用户。问题是,当我运行代码时,我可以选择一个选项,但当我想创建一个新用户时,我不能键入任何内容。为什么会发生这种情况?我如何解决

import java.util.ArrayList;
import java.util.Iterator;
import java.util.Scanner;

public class Main {

private ArrayList<String> users;

public static void main(String[] args) {
    Main m = new Main();
    m.menu();
}

public void createNewUser(String name) {
    users.add(name);
}

public boolean search(String username) {
    if (users.contains(username))
        return true;
    else
        return false;
}

public void displayUsers() {
    Iterator<String> itr = users.iterator();
    while (itr.hasNext()) {
        String name = itr.next();
        System.out.println(name);
    }
}

public void menu() {
    users = new ArrayList<String>();
    int choice = 0;
    String name;
    Scanner input = new Scanner(System.in);

    System.out.println("Choose an option:");
    System.out.println("1- Create new user");
    System.out.println("2- Select current user");

    choice = input.nextInt();

    if (choice == 1) {
        System.out.println("Enter your name: ");
        name = input.nextLine();
        createNewUser(name);
        displayUsers();
    } else {
        do {
            displayUsers();
            System.out.println("Enter your username: ");
            name = input.nextLine();
            if (search(name)) {
                System.out.println("User found");
                break;
            }
            else
                System.out.println("This username does not exist.");
        } while (!search(name));

    }

}
}

尝试添加input.nextLine;选择后。

众所周知的行为您必须使用换行符为什么在搜索方法中使用if-else;您只需要返回用户即可。containsSuserName,这从一开始就消除了从包含中分离方法的需要…虽然这可以解决问题,但也可以解释为什么会出现问题以及为什么您的解决方案会纠正它,以便OP和其他读者可以从中学习。我尝试过这样做,但它不起作用。它应该对我起作用。您遇到了什么问题有错误消息?没有错误消息,我无法像以前一样键入任何内容。是否确实保存并重新编译了?
System.out.println("Choose an option:");
    System.out.println("1- Create new user");
    System.out.println("2- Select current user");

    choice = input.nextInt();
    input.nextLine();