我是新手做的循环。
我试图创建一个do-while循环来检查用户输入是整数还是字符x。如果它既不提示用户再试一次。
循环反而提示用户两次:
预期输出:
Enter answer:
500
//program is succesful
实际输出:
Enter answer:
500
//prompts user for more input
代码:
do {
System.out.println("Enter answer: ");
input = scan.next();
if(input.trim().equals("x"))
{
terminate = false;
break;
}
while (!scan.hasNextInt()) {
input = scan.next();
System.out.println(input + " is not a interger!!");
}
operationResult = scan.nextInt();
valid = false;
} while (valid);
答案 0 :(得分:1)
你总是可以使用try...catch
,但我认为这会更好 -
do{
if(scan.hasNextInt()){
operationResult = scan.nextInt();
break;
}else if(scan.next().trim().equals("x")){
break;
}else{
System.out.println("Enter an Integer!!");
}
}while(true);
它首先检查它是否为整数,因此不需要try...catch
答案 1 :(得分:0)
您可以使用以下给出: 它不会检查整数值,但它会检查输入的数值,这可能会有帮助
public class SomeClass {
public static void main(String args[]) {
try (Scanner scan = new Scanner(System.in)) {
do {
String str = scan.next();
if (isNumeric(str)) {
System.out.println("Program Ends");
break;
} else if (str.equalsIgnoreCase("x")) {
System.out.println("Program Ends");
break;
} else {
System.out.println("Enter Again");
}
} while (true);
}
}
public static boolean isNumeric(String str) {
return !str.matches(".*[^0-9].*");
}
}