Java 中 Scanner.nextLine 的问题
Problems with Scanner.nextLine in Java
在Java,我试过了
try (Scanner sc = new Scanner(System.in)) {
while (sc.hasNextLine()) {
System.out.print("Name: ");
String name = sc.nextLine();
System.out.println("Name is \"" + name + "\"");
}
}
但它在要求输入之前不输出 Name:
。
控制台只显示一个空的控制台window,我可以在其中输入名称。
如何确保在询问名称之前输出Name:
?
编辑
try (Scanner sc = new Scanner(System.in)) {
System.out.print("Name: ");
while (sc.hasNextLine()) {
String name = sc.nextLine();
System.out.println("Name is \"" + name + "\"");
System.out.print("Age: ");
int age = sc.nextInt();
System.out.println("Age is " + age);
System.out.print("Name: ");
}
将你的 println 放在 while 循环之前,然后在末尾添加一个。
try (Scanner sc = new Scanner(System.in)) {
System.out.print("Name: ");
while (sc.hasNextLine()) {
String name = sc.nextLine();
System.out.println("Name is \"" + name + "\"");
System.out.print("Name: ");
}
}
扫描仪在运行下一个代码之前会等待接收到输入,因此只需将打印件放在扫描仪之前,然后放在 while 循环的末尾。
你应该像这样在 while 循环之前放置 System.out.print("Name: ");
:
try (Scanner sc = new Scanner(System.in)) {
System.out.print("Name: ");
while (sc.hasNextLine()) {
String name = sc.nextLine();
System.out.println("Name is \"" + name + "\"");
}
}
如果您想知道此问题的原因,请查看此 link1 and link2
这可能是避免重复代码的更好设计。
不必将循环结束条件限制为 while 语句 ;)
try (Scanner sc = new Scanner(System.in)) {
while (true) {
System.out.print("Name: ");
if (!sc.hasNextLine()) break;
String name = sc.nextLine();
System.out.println("Name is \"" + name + "\"");
}
}
编辑:
您的编辑无法正常工作,因为 sc.nextInt()
没有吃掉换行符,因此请将 sc.nextLine()
放在 sc.nextInt()
之后。
在Java,我试过了
try (Scanner sc = new Scanner(System.in)) {
while (sc.hasNextLine()) {
System.out.print("Name: ");
String name = sc.nextLine();
System.out.println("Name is \"" + name + "\"");
}
}
但它在要求输入之前不输出 Name:
。
控制台只显示一个空的控制台window,我可以在其中输入名称。
如何确保在询问名称之前输出Name:
?
编辑
try (Scanner sc = new Scanner(System.in)) {
System.out.print("Name: ");
while (sc.hasNextLine()) {
String name = sc.nextLine();
System.out.println("Name is \"" + name + "\"");
System.out.print("Age: ");
int age = sc.nextInt();
System.out.println("Age is " + age);
System.out.print("Name: ");
}
将你的 println 放在 while 循环之前,然后在末尾添加一个。
try (Scanner sc = new Scanner(System.in)) {
System.out.print("Name: ");
while (sc.hasNextLine()) {
String name = sc.nextLine();
System.out.println("Name is \"" + name + "\"");
System.out.print("Name: ");
}
}
扫描仪在运行下一个代码之前会等待接收到输入,因此只需将打印件放在扫描仪之前,然后放在 while 循环的末尾。
你应该像这样在 while 循环之前放置 System.out.print("Name: ");
:
try (Scanner sc = new Scanner(System.in)) {
System.out.print("Name: ");
while (sc.hasNextLine()) {
String name = sc.nextLine();
System.out.println("Name is \"" + name + "\"");
}
}
如果您想知道此问题的原因,请查看此 link1 and link2
这可能是避免重复代码的更好设计。 不必将循环结束条件限制为 while 语句 ;)
try (Scanner sc = new Scanner(System.in)) {
while (true) {
System.out.print("Name: ");
if (!sc.hasNextLine()) break;
String name = sc.nextLine();
System.out.println("Name is \"" + name + "\"");
}
}
编辑:
您的编辑无法正常工作,因为 sc.nextInt()
没有吃掉换行符,因此请将 sc.nextLine()
放在 sc.nextInt()
之后。