Scanner.nextLine();不读名字和姓氏

时间:2017-05-18 08:51:09

标签: java java.util.scanner user-input

所以我试图让用户输入他们的名字和姓氏。我尝试使用Scanner.next();但是只读取名字(第一个标记),但我还需要扫描仪来读取姓氏。所以我做了以下事情:

Scanner sc = new Scanner(System.in);
Player1 player1 = new Player1();
System.out.print("Please write your first name and last name: ");
player1.setName(sc.nextLine());

所以这是我的代码。我希望扫描程序读取名字和姓氏,并将其传递给方法setName,该方法将输入保存到位于Player1类中的变量中。

现在,当我编译并启动程序时,它只打印出“请写下您的名字和姓氏”的声明,但之后我不能输入任何内容。

Player1 player1 = new Player1();
Player2 player2 = new Player2();
Scanner sc = new Scanner(System.in);
System.out.print("Write your first and last name: "); 
player1.setName(sc.nextLine());
System.out.print("\nWrite your first and last name: ");
player2.setName(sc.nextLine());

现在这段代码几乎相同,只是我不是第二个用户输入他们的名字和姓氏。在我编译程序时,我不能在第一个语句之后输入任何信息,但之后我只能输入第二个用户的名字和姓氏。

这里发生了什么?我很感激所有的帮助!

3 个答案:

答案 0 :(得分:2)

我尝试执行你的程序,它运行正常。

但是我觉得你是第一次在控制台上获得以下行后按Enter键

Write your first and last name

不按Enter键,只需输入第一个用户的名称即可。然后按回车键,它将要求您提供第二个用户凭据。

您还可以使用println并将程序中的消息修改为

        Player player1 = new Player();
        Player player2 = new Player();
        Scanner sc = new Scanner(System.in);
        System.out.println("Write your first and last name");
        player1.setName(sc.nextLine());
        System.out.println("Write your first and last name");
        player2.setName(sc.nextLine());

答案 1 :(得分:0)

nivel_1

我修了一下但是上面还有另一个代码和平。当我删除它一切都开始工作正常。但它有什么问题呢?

答案 2 :(得分:-1)

我会尝试将调用sc.nextLine()的结果分配给字符串,而不是将其直接传递给方法。

String player1name = sc.nextLine(); player1.setName(player1name);

这可以帮助您隔离问题。