我正在学习java我自己但是从我所知道的我似乎无法解决这个问题 目前正在测试一个脚本,如果你没有输入你的名字,你必须重新输入它,但是这个错误出现了我到处搜索但我尝试过的大多数事情都没有用
Please type in your name:
lucas
Welcome lucas
Confirm your name:
luca
Please type in your name:
Exception in thread "main" java.util.NoSuchElementException: No line found
at java.util.Scanner.nextLine(Unknown Source)
at input.main(input.java:9)
这是代码:
import java.util.Scanner;
public class input {
public static void main(String[] args) {
while (true) {
try (Scanner input = new Scanner(System.in)) {
System.out.println("Please type in your name: ");
String name = input.nextLine();
System.out.println("Welcome " + name);
if (name.equals("nico")) {
System.out.println("bitch");
break;
} else {
System.out.println("Confirm your name:");
String name1 = input.nextLine();
if (name1.equals("nico")) {
System.out.println("Hello " + name1 + "... bitch");
} else if (name1.equals(name)) {
System.out.println("Thank you");
break;
}
}
}
}
}
}
答案 0 :(得分:2)
将try-with-resources
移至while
循环周围。当执行离开try-with-resources
时,Java将关闭资源。这里,该资源是标准输入,无法重新打开。
try (Scanner input = new Scanner(System.in)) {
while (true) {
System.out.println("Please type in your name: ");
你实际上并不需要try-with-resources
。不要关闭标准输入/输出/错误。
答案 1 :(得分:1)
不要将Scanner
放入循环中。
扫描仪仍有输入时循环。
目前,您经常创建 new Scanner
。