如果输入的值不正确,则会提示您输入正确的金额,但在输入正确或错误的金额后,它只会结束程序。对不起,我之前应该提到该程序会持续12个月。我的问题是,在我输入错误的金额后,一旦我被提示输入适当数量的任何一个月,该程序将接受我的答案并结束,而不是采取正确的答案并继续下个月。
System.out.print("Please enter monthly kWh usage for month 1: ");
month1 = scan.nextInt();
do {
System.out.print(" Please enter a valid amount: ");
month1 = scan.nextInt();
} while (month1>10000 || month1<0);
System.out.print("Please enter monthly kWh usage for month 2: ");
month2 = scan.nextInt();
do {
System.out.print(" Please enter a valid amount: ");
month2 = scan.nextInt();
} while (month2>10000 || month2<0);
答案 0 :(得分:3)
您的代码完全正确“只是结束程序”因为 没有其他代码行可以执行!
第一个执行循环将接受输入并将其存储在变量month1
中,然后检查它是否在0
和10000
之间。如果是这样,它将退出循环,否则它会一次又一次地运行循环,直到您输入0
和10000
之间的值。然后第二个循环将对month2
变量执行相同的操作。
存储两个变量后,程序将退出而不执行任何,因为没有要执行的代码行。在此之后,您需要编写一些代码行来执行某些操作。
P.S。此外,最好将nextInt()
与 try-catch 块包围起来,因为输入非数字值会导致程序崩溃。
<小时/> 修改强>
此外,您需要移除month1 = scan.nextInt();
和month2 = scan.nextInt();
行,因为 do-while 循环首次负责初始化变量。
答案 1 :(得分:2)
也许这样的事情就是你想要的。 do
正在弄乱你,因为如果第一个输入满足你的条件,循环仍然至少会发生一次。只需使用while
循环
System.out.print("Please enter monthly kWh usage for month 1: ");
month1 = scan.nextInt();
while (month1 > 10000 || month1 < 0) {
System.out.print(" Please enter a valid amount: ");
month1 = scan.nextInt();
}
System.out.print("Please enter monthly kWh usage for month 2: ");
month2 = scan.nextInt();
while (month2 > 10000 || month2 < 0) {
System.out.print(" Please enter a valid amount: ");
month2 = scan.nextInt();
}
编辑:运行代码
import java.util.Scanner;
public class Month {
public static void main(String[] args) {
int month1;
int month2;
Scanner scan = new Scanner(System.in);
System.out.print("Please enter monthly kWh usage for month 1: ");
month1 = scan.nextInt();
while (month1 > 10000 || month1 < 0) {
System.out.print(" Please enter a valid amount: ");
month1 = scan.nextInt();
}
System.out.print("Please enter monthly kWh usage for month 2: ");
month2 = scan.nextInt();
while (month2 > 10000 || month2 < 0) {
System.out.print(" Please enter a valid amount: ");
month2 = scan.nextInt();
}
}
}
答案 2 :(得分:0)
nextint()将抛出异常:
InputMismatchException - if the next token does not match the Integer regular expression, or is out of range
尝试使用例外块:
try {
...
}
catch( InputMismatchException e ) {
System.out.println( e.getMessage() );
e.printStackTrace();
}
答案 3 :(得分:0)
首先,你何时使用do..while,你不需要捕获循环外的输入。这会强制您输入两次输入,可以删除多余的语句。
其次,你有没有任何声明要在第二次执行后执行...时间?
我建议你提供更多细节,你想在这里实现什么目标?