我是Java的新手,我不知道为什么它在运行时给我一个错误。任何人都可以向我解释这是什么问题?我最好随机尝试不同的东西,但没有在哪里,我可能会从知道他们正在做什么的人那里学到更多东西。谢谢!
我的代码:
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)
答案 0 :(得分:0)
在第21行,您关闭从Scanner
读取的System.in
,这会关闭与其相关的所有资源(意味着System.in
)。不要关闭Scanner
,你应该做得很好。
答案 1 :(得分:-1)
您真的不需要使用两台扫描仪。解析日期有better classes。但是如果您打算使用两个扫描仪,其中一个扫描日期,那么您应该将连接到System.in的扫描仪打开以从控制台读取,并且扫描仪读取dateIn应该附加到scann。