NoSuchElementException 与 Scanner.nextLine()
NoSuchElementException with Scanner.nextLine()
我是 Java 的新手,我不知道为什么它在 运行 时给我一个错误。任何人都可以向我解释这是什么问题吗?尽我最大努力 运行domly 尝试不同的事情,但没有成功,我可能会从知道自己在做什么的人那里学到更多。谢谢!
我的代码:
import java.util.Scanner;
// Get date input and display results
// Parse using a delimiter
public class InputOutput3
{
public static void main(String[] args)
{
// Declare variables
String dateIn, input;
int month, day, year;
Scanner scan, scann;
// Initialize variables
scan = new Scanner(System.in);
// Prompt and wait for input
System.out.print("Enter enter the date (mm/dd/yy) > ");
dateIn = scan.nextLine();
scan.close();
// Analyze value entered
scan = new Scanner(dateIn);
scan.useDelimiter("/");
month = scan.nextInt();
day = scan.nextInt();
year = scan.nextInt();
// Display results
System.out.println("The month is " + month);
System.out.println("The day is " + day);
System.out.println("The year is " + year);
//Get their name
scann = new Scanner(System.in);
System.out.print("Please enter your name: ");
input = scann.nextLine();
System.out.print("Your name is " +input);
// Close resources
scan.close();
scann.close();
}
}
结果:
Please enter your name:
Exception in thread "main" java.util.NoSuchElementException: No line found
at java.util.Scanner.nextLine(Unknown Source)
at InputOutput3.main(InputOutput3.java:38)
在第 21 行,您关闭了从 System.in
读取的 Scanner
,这将关闭与其相关的所有资源(即 System.in
)。不要关闭Scanner
,你应该是好的。
您真的不需要使用两个扫描仪。有 better classes 用于解析日期。但是如果你打算使用两个扫描器,其中一个来解析日期,那么你应该让扫描器连接到 System.in 打开以从控制台读取,并且读取 dateIn 的扫描器应该附加到 scann。
我是 Java 的新手,我不知道为什么它在 运行 时给我一个错误。任何人都可以向我解释这是什么问题吗?尽我最大努力 运行domly 尝试不同的事情,但没有成功,我可能会从知道自己在做什么的人那里学到更多。谢谢!
我的代码:
import java.util.Scanner;
// Get date input and display results
// Parse using a delimiter
public class InputOutput3
{
public static void main(String[] args)
{
// Declare variables
String dateIn, input;
int month, day, year;
Scanner scan, scann;
// Initialize variables
scan = new Scanner(System.in);
// Prompt and wait for input
System.out.print("Enter enter the date (mm/dd/yy) > ");
dateIn = scan.nextLine();
scan.close();
// Analyze value entered
scan = new Scanner(dateIn);
scan.useDelimiter("/");
month = scan.nextInt();
day = scan.nextInt();
year = scan.nextInt();
// Display results
System.out.println("The month is " + month);
System.out.println("The day is " + day);
System.out.println("The year is " + year);
//Get their name
scann = new Scanner(System.in);
System.out.print("Please enter your name: ");
input = scann.nextLine();
System.out.print("Your name is " +input);
// Close resources
scan.close();
scann.close();
}
}
结果:
Please enter your name:
Exception in thread "main" java.util.NoSuchElementException: No line found
at java.util.Scanner.nextLine(Unknown Source)
at InputOutput3.main(InputOutput3.java:38)
在第 21 行,您关闭了从 System.in
读取的 Scanner
,这将关闭与其相关的所有资源(即 System.in
)。不要关闭Scanner
,你应该是好的。
您真的不需要使用两个扫描仪。有 better classes 用于解析日期。但是如果你打算使用两个扫描器,其中一个来解析日期,那么你应该让扫描器连接到 System.in 打开以从控制台读取,并且读取 dateIn 的扫描器应该附加到 scann。