很抱歉,如果代码看起来有点乱。这是我第一次发帖,并且我不确定如何在时间限制下为网站设置格式。
我在这里很有约束力。我现在已经试图解决这个问题很长时间了,但似乎无法解决这个问题。我是Java的新手,所以如果代码有点乱,乱,或者它的作用有点太长,请不要介意。我的问题在于前几行:
"扫描仪输入=新扫描仪(System.in);"
我能够在输入高于或低于0/99的数字的情况下使if语句正常工作,但是如果输入这两者之间的数字,则没有任何反应。我在我的教科书(Java编程综合第10版简介)中搜索过,似乎无法确定问题所在。有没有办法让程序继续超过"如果"声明和涉及" input2"?
的代码行提前致谢!
package lab03;
import java.util.Scanner;
public class Lab03 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Please enter an integer between 0-99: ");
int input1 = input.nextInt();
if (input1 < 0 || input1 > 99)
System.out.println(" Outside range. Please enter an integer between 0-99: ");
input1 = input.nextInt();
if (input1 < 0 || input1 > 99) {
System.out.println("Outside range. Program ending.");
System.exit(0);
System.out.println("Next, please enter another integer between 0-99: ");
int input2 = input.nextInt();
if (input2 < 0 || input2 > 99)
System.out.println(" Outside range. Please enter an integer between 0-99: `enter code here`");
input2 = input.nextInt();
if (input2 < 0 || input2 > 99) {
System.out.println("Outside range. Program ending.");
System.exit(0);
答案 0 :(得分:1)
我会将它们置于while(scanner.hasNextInt())
循环中,然后如果符合条件,则调用continue
,它将返回到while循环的开头。
答案 1 :(得分:0)
问题是由于您致电System.exit()
,因此无法访问这些语句。 if
语句执行它们下面的下一行或大括号内的所有内容。正如您所看到的那样,您有一个开放式支撑,但实际上并未发布支撑关闭的代码。这意味着下一行下面的所有内容都将执行,包括System.exit()
。
if (input1 < 0 || input1 > 99) {
您当前的程序可以简化为
public static void main(String args[]) {
Scanner input = new Scanner(System.in);
System.out.println("Please enter an integer between 0-99: ");
int input1 = input.nextInt();
if (input1 < 0 || input1 > 99) {
System.out.println(" Outside range. Please enter an integer between 0-99: ");
}
input1 = input.nextInt();
if (input1 < 0 || input1 > 99) {
System.out.println("Outside range. Program ending.");
System.exit(0);
// everything below this will never execute
}
}
答案 2 :(得分:0)
我认为你缺少大括号,它们定义了你的第一个if语句所导致的范围。你可能意味着像这样的东西
if (input1 < 0 || input1 > 99) {
System.out.println(" Outside range. Please enter an integer between 0-99: ");
input1 = input.nextInt();
if (input1 < 0 || input1 > 99) {
System.out.println("Outside range. Program ending.");
System.exit(0);
}
}
但实际发生的是该程序正在等待第二次尝试输入input1
。
答案 3 :(得分:0)
基本上,您已将“持续”状态包裹在“失败”状态if
阻止......
if (input1 < 0 || input1 > 99) {
System.out.println("Outside range. Program ending.");
System.exit(0);
// This is included within the failed block
// but will never execute because of the previous statement
System.out.println("Next, please enter another integer between 0-99: ");
int input2 = input.nextInt();
if (input2 < 0 || input2 > 99) {
System.out.println(" Outside range. Please enter an integer between 0-99: `enter code here`");
}
input2 = input.nextInt();
if (input2 < 0 || input2 > 99) {
System.out.println("Outside range. Program ending.");
System.exit(0);
}
}
当else
条件“无法”满足时,您应该执行if
条件
if (input1 < 0 || input1 > 99) {
System.out.println("Outside range. Program ending.");
System.exit(0);
} else {
// This is included within the failed block
// but will never execute because of the previous statement
System.out.println("Next, please enter another integer between 0-99: ");
int input2 = input.nextInt();
if (input2 < 0 || input2 > 99) {
System.out.println(" Outside range. Please enter an integer between 0-99: `enter code here`");
}
input2 = input.nextInt();
if (input2 < 0 || input2 > 99) {
System.out.println("Outside range. Program ending.");
System.exit(0);
}
}
请记住{...}
为其所围绕的代码添加上下文
根据您想要实现的目标,您还可以使用do-while
循环在输入循环中“捕获”用户,直到他们输入正确的值...
int input1 = -1;
do {
System.out.println("Please enter an integer between 0-99: ");
String text = input.nextLine();
try {
input1 = Integer.parseInt(text);
if (input1 < 0 || input1 > 99) {
System.out.print("Outside range. ");
}
} catch (NumberFormatException exp) {
System.out.println(text + " is not a valid numerical value");
}
} while (input1 < 0 || input1 > 99);
现在,请记住,这会捕获它们,直到它们输入介于0和99之间的值为止,因此您可能需要考虑添加“转义”条件(即“(键入'e'退出)然后要么突破循环或退出程序;)
答案 4 :(得分:0)
您当前的代码仅适用于大于99且小于0的数字。对于程序继续,您需要一个介于0和99之间的数字的else语句。
if (input1 < 0 || input1 > 99) {
System.out.println(" Outside range. Please enter an integer between 0-99: ");
input1 = input.nextInt();
}else{
//Continue on with program
}
if (input1 < 0 || input1 > 99) {
System.out.println("Outside range. Program ending.");
System.exit(0);