正在跳过扫描仪nextLine

0 java

所以这是我使用的代码:

System.out.println("Create a name.");
name = input.nextLine();
System.out.println("Create a password.");
password = input.nextLine();
Run Code Online (Sandbox Code Playgroud)

但是当它到达这一点时,它只是说"创建一个名字".和"创建密码".两个在同一时间然后我必须输入一些东西.所以它基本上是跳过我需要键入字符串的Scanner部分.在"创建一个名字"之后.和"创建密码".是打印出来的,然后输入,名称和密码都改为我输入的内容.如何解决这个问题?

这是全班.我只是测试所以它实际上不是一个程序:

package just.testing;

import java.util.Scanner;
public class TestingJava
{
    static int age;
    static String name;
    static String password;
    static boolean makeid = true;
    static boolean id = true;

    public static void main(String[] args){
        makeid(null);
        if(makeid == true){
            System.out.println("Yay.");
        }else{

        }
    }
    public static void makeid(String[] args){
        System.out.println("Create your account.");
        Scanner input = new Scanner(System.in);
        System.out.println("What is your age?");
        int age = input.nextInt();
        if(age<12){
            System.out.println("You are too young to make an account.");
            makeid = false;
            return;
        }
        System.out.println("Create a name.");
        name = input.nextLine();
        System.out.println("Create a password.");
        password = input.nextLine();
        return;
    }
}
Run Code Online (Sandbox Code Playgroud)

抱歉我的语法不好.我不是英国人,所以我很难解释这一点.

zw3*_*324 10

nextInt()吃了输入数字而不是EOLN:

Create your account.
What is your age?
123 <- Here's actually another '\n'
Run Code Online (Sandbox Code Playgroud)

所以在创建名称之后第一次调用nextLine()接受它作为输入.

System.out.println("Create a name.");
name = input.nextLine(); <- This just gives you "\n"
Run Code Online (Sandbox Code Playgroud)

用户Integer.parseInt(input.nextLine())或在读取数字后添加另一个input.nextLine()将解决此问题:

int age = Integer.parseInt(input.nextLine());
Run Code Online (Sandbox Code Playgroud)

要么

int age = input.nextInt();
input.nextLine()
Run Code Online (Sandbox Code Playgroud)

另请参阅此处查看重复的问题.