public class Main{
public static void main(String args[]){
int i = nextInt();
}
public int nextInt(){
int i=0;
boolean done=false;
Scanner scanner = new Scanner(System.in);
while (!scanner.hasNextInt()){
scanner.nextLine();
Printer.println(Printer.PLEASE_NUMBER);
}
i=scanner.nextInt();
scanner.close();
return i;
}
}
上面的代码是我试图强制用户输入int值的方法,但我得到nosuchelement异常,因为scanner.nextLine()读取NULL。 在c ++中,软件等待用户输入内容。有什么办法可以强制程序停止,等待用户输入内容然后进行检查吗?
编辑: 所以无论如何我都遇到了问题,如果我在Main类之外使用扫描器,那就会出错...
答案 0 :(得分:1)
如果您希望用户输入并且扫描仪仅提取整数值,则Scanner提供方法:
int i = scanner.nextInt();
i
将存储输入控制台的下一个值。如果i
不是整数,它将抛出异常。
这是一个例子:假设我想让用户输入一个数字,然后我想把它吐回给用户。这将是我的主要方法:
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("Please print your number: ");
int i = sc.nextInt();
System.out.println("Your Number is: " + i);
}
现在要检查i
是否为整数,您可以使用if语句。但是,如果您希望程序重复直到用户输入一个整数,您可以使用while循环或do while循环,其中循环的参数将检查i
是否为整数。
希望这就是你要找的!顺便说一下,避免命名你的方法nextInt(),因为import java.util.Scanner;
已经有了这个方法名。不要忘记导入!
答案 1 :(得分:0)
你可以这样做:
public static void main(String[] args) {
System.out.println("" + nextInt());
}
public static int nextInt(){
int i=0;
boolean done=false;
Scanner scanner = new Scanner(System.in);
System.out.println("Please enter a number:");
while (!scanner.hasNextInt()){
System.out.println("Please enter a number:");
scanner.nextLine();
}
i = scanner.nextInt();
scanner.close();
return i;
}
这将导致程序在每次执行循环时停止并等待输入。它会一直循环,直到int
中有scanner
。
答案 2 :(得分:0)
这很有效。肯定有更好的解决方案。
编辑正如预测的那样。检查this,
import java.util.Scanner;
public class NewMain{
static boolean badNumber;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
do{
System.out.print("Please print your number: ");
try{
int i = sc.nextInt();
System.out.println("Your Number is: " + i);
badNumber = false;
}
catch(Exception e){
System.out.println("Bad number");
sc.next();
badNumber = true;
}
}while(badNumber);
}
}