java 扫描器强制用户输入一个 int 值
java Scanner force user to input a int value
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 class 之外使用扫描仪,它会给出错误...
如果您希望用户输入并且扫描仪只拾取一个整数值,扫描仪提供了方法:
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;
已经具有该方法名称。也不要忘记 imports!
你可以这样做:
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;
}
这将导致程序在每次执行循环时停止并等待输入。它会一直循环,直到它在 scanner
.
中有一个 int
这行得通。肯定有更好的解决方案。
编辑 正如预测的那样。检查 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);
}
}
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 class 之外使用扫描仪,它会给出错误...
如果您希望用户输入并且扫描仪只拾取一个整数值,扫描仪提供了方法:
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;
已经具有该方法名称。也不要忘记 imports!
你可以这样做:
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;
}
这将导致程序在每次执行循环时停止并等待输入。它会一直循环,直到它在 scanner
.
int
这行得通。肯定有更好的解决方案。
编辑 正如预测的那样。检查 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);
}
}