x = input.nextInt();
while (!input.hasNextInt(x)) {
System.out.println("Enter a valid int");
x = input.nextInt();
}
while (x <=0 || x > 3) {
System.out.println("Choose a correct gear number: ");
x = input.nextInt();
}
switch(x) {
case 1:
System.out.println("You're in Gear 1");
break;
case 2:
System.out.println("Gear 2");
break;
case 3:
System.out.println("Gear3");
}
我无法弄清楚如何在 int 不是 int 的情况下连续循环请求 int x
。我尝试了很多东西。每次我输入字母或字母数字组合时,例如Q
或23k
或2k
等。我收到不匹配错误。我希望能够检查用户是否在我的方法中输入了他不应该输入的内容。
如果您使用 Scanner 类的 nextInt() 方法来读取输入(如 23k,这是一个字符串值),逻辑很简单,它将抛出输入不匹配异常,因为它需要一个整数值,但您正在输入一个字符串值。
因此,您需要使用 next() 方法将输入读取为字符串,然后验证它是否有效整数值。
public static void main(String[] args){
System.out.println("Entered inside the program....");
Scanner console=new Scanner(System.in);
System.out.println("Enter an input...");
String s=console.next();
if(null==s || !isInt(s)){
System.out.println("Entered input is not a valid integer:"+s);
}
System.out.println("Entered input is a valid integer");
}
private static boolean isInt(String arg){
try{
Integer.parseInt(arg);
return true;
}catch(NumberFormatException nfe){
return false;
}
}
while(input.hasNext()) {
if(input.hasNextInt()) {
x = input.nextInt();
if(x <= 0 || x > 3) {
// throw exception or whatever your requirements is.
}
switch(x){
case 1:
System.out.println("You're in Gear 1");
break;
case 2:
System.out.println("Gear 2");
break;
case 3:
System.out.println("Gear3");
}
}
}
我希望能够检查用户是否正在输入他的东西 不应该在我的方法中。
int x = 0;
while(x <=0 || x > 3){
try {
System.out.println("Choose a correct gear number: ");
x = input.nextInt();
} catch (InputMismatchException ex) {
System.out.println("Invalid input");
input.nextLine();//the scanner can freely read the next
}
}
仅接受1
、2
和 3
的输入值。如果您输入除数字以外的任何内容,例如 24k
,则此代码将引发异常java.util.InputMismatchException
并再次询问输入。
String str = "1 2 3 4 str";
Scanner input = new Scanner(str);
while(input.hasNext()){
if(input.hasNextInt()){
int x = input.nextInt();
switch(x) {
case 1:
System.out.println("You're in Gear 1");
break;
case 2:
System.out.println("Gear 2");
break;
case 3:
System.out.println("Gear3");
break;
default : System.out.println("Number out of range");
}
}
else {
System.out.println("Input not a integer::" + input.next());
}
}
工作解决方案:
import java.util.Scanner;
公共类 AskGear {
public static void main(String[] args) {
int choose = 0;
Scanner sc = new Scanner(System.in);
for (;;) {
System.out.println("Enter your choice: ");
if (!sc.hasNextInt()) {
System.out.println("only integers!: ");
sc.next(); // discard
continue;
}
choose = sc.nextInt();
if (choose <= 0 || choose > 3) {
System.out.println("Choose a correct gear number");
continue;
}
boolean choiceMade = false;
switch (choose) {
case 1:
System.out.println("You're in Gear 1");
choiceMade = true;
break;
case 2:
System.out.println("Gear 2");
choiceMade = true;
break;
case 3:
System.out.println("Gear3");
choiceMade = true;
}
if (choiceMade) {
break;
}
}
}
}
注意:如果您希望它无休止地运行,即使用户输入了正确的档位,您可以注释此代码:
if (choiceMade) {
break;
}