Joe*_*hez 2 java java.util.scanner
我想要做的是,如果用户点击回车键,程序应该抛出BadUserInputException.我的问题是,每当我按下回车键,它只是把我放在控制台的另一行,基本上什么都不做.
Scanner input = new Scanner(System.in);
System.out.println("Enter Student ID:");
String sID = null;
if (input.hasNextInt()==false){
System.out.println("Please re-check the student number inputted. Student number can only be digits.");
throw new BadUserInputException("Student number can not contain non-digits.");
}else if (input.next()==""){
throw new BadUserInputException("Student number can not be empty");
}
Run Code Online (Sandbox Code Playgroud)
小智 7
我遇到了这个确切的问题,我相信我找到了一个解决方案.
关键是接受输入为String类型并使用该.isEmpty()方法检查用户是否输入了任何内容.
如果您的String名为"cheese"且您的扫描仪名为"in",则以下是这样的:
cheese = ""; // empty 'cheese' of prior input
cheese = in.nextLine(); //read in a line of input
//if user didn't enter anything (or just spacebar and return)
if(cheese.isEmpty()) {
System.out.println("Nothing was entered. Please try again");
}
//user entered something
else {
[enter code here checking validity of input]
}
Run Code Online (Sandbox Code Playgroud)
我尝试对整数输入实现此检查,并发现最好接受String类型输入并使用包装类将其转换为int类型.如果你有
int eger = 0; //initialize to zero
Run Code Online (Sandbox Code Playgroud)
那么你会把这段代码放在else上面的陈述中:
else{
eger = Integer.valueOf(cheese);
}
Run Code Online (Sandbox Code Playgroud)
我知道这个问题是在2年前被问到的,但我发布这个问题是为了帮助像我这样寻找答案的人.:)
扫描器在空格和换行符之间寻找标记 - 但没有。我不倾向于使用Scanner从标准输入读取 - 我使用这样的老式BufferedReader方法:
BufferedReader buf = new BufferedReader (new InputStreamReader (System.in));
Run Code Online (Sandbox Code Playgroud)
然后我可以说
String line = buf.readLine ();
if (line.equals ("")) blah();
Run Code Online (Sandbox Code Playgroud)
然而,可能有一个更简单的解决方案。