所以这是我正在使用的代码:
System.out.println("Create a name.");
name = input.nextLine();
System.out.println("Create a password.");
password = input.nextLine();
但是当它到达这一点时,它只是说“创建一个名字”。和“创建密码”。两个在同一时间然后我必须输入一些东西。所以它基本上是跳过我需要键入字符串的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;
}
}
抱歉我的语法不好。我不是英文,所以我很难解释这一点。
答案 0 :(得分:10)
nextInt()吃了输入数字而不是EOLN:
Create your account.
What is your age?
123 <- Here's actually another '\n'
所以在create name之后第一次调用nextLine()会接受它作为输入。
System.out.println("Create a name.");
name = input.nextLine(); <- This just gives you "\n"
用户Integer.parseInt(input.nextLine())或在读取数字后添加另一个input.nextLine()将解决此问题:
int age = Integer.parseInt(input.nextLine());
或
int age = input.nextInt();
input.nextLine()
另请参阅here了解重复的问题。
答案 1 :(得分:1)
这实际上并没有告诉你为什么要跳过这些行,但是当你捕获名称和密码时,你可以使用Console:
Console console = System.console();
String name = console.readLine("Create a name.");
char[] password = console.readPassword("Create a password.");
System.out.println(name + ":" + new String(password));
答案 2 :(得分:0)
您也可以使用next()而不是nextLine()。我在日食中测试了它。工作正常。
答案 3 :(得分:0)
next()
将起作用,但它不会在空格后读取字符串。