尝试编写一个程序,其中用户输入他们一周的费用。麻烦在于我希望程序重新询问用户是否输入了不可接受的输入。我想出了如何检测负值的方法,但是当尝试捕获输入不匹配异常(如果像输入字符或字符串一样)时,循环只是无限运行,要求“星期一费用:”我如何使它,以便用户有另一个回答的机会?我试着Rest一下;但是这也打破了做而循环,我不想要。
这是我目前为止的代码:
import java.util.Scanner;
public class BarGraph{
public static void main (String[] args){
Scanner myScanner;
myScanner = new Scanner(System.in);
double mon, tues, wed, thurs, fri, sat, sun;
do{
try{
System.out.print("Expenses for Monday: ");
mon = myScanner.nextDouble();
}catch( Exception e){
mon = -1;
}
}while(mon<0);
System.out.println(mon);
}
}
谢谢你的帮助
可以使用my scanner . nextline();在开始下一个循环之前,转储缓存中所有不必要的字符
import java.util.Scanner;
public class BarGraph {
public static void main(String[] args) {
Scanner myScanner;
myScanner = new Scanner(System.in);
double mon, tues, wed, thurs, fri, sat, sun;
do {
try {
System.out.print("Expenses for Monday: ");
mon = myScanner.nextDouble();
} catch (Exception e) {
mon = -1;
myScanner.nextLine();
}
} while (mon < 0);
System.out.println(mon);
}
}
对 nextDouble()
的调用不会占用扫描仪的非双精度
值
。你需要这样的东西,
if (myScanner.hasNextDouble()) {
mon = myScanner.nextDouble();
} else {
System.out.printf("%s is not a double.%n", myScanner.next());
}
此外,我建议您将该逻辑提取到一个方法中。喜欢
static double getExpensesForDay(Scanner scanner, String day) {
while (true) {
System.out.printf("Expenses for %s: ", day);
System.out.flush();
if (scanner.hasNextDouble()) {
return scanner.nextDouble();
}
System.out.printf("%s is not a double.%n", scanner.nextLine());
}
}
然后你可以这样称呼它
public static void main(String args[]) {
Scanner myScanner = new Scanner(System.in);
double mon = getExpensesForDay(myScanner, "Monday");
double tues = getExpensesForDay(myScanner, "Tuesday");
double wed = getExpensesForDay(myScanner, "Wednesday");
double thurs = getExpensesForDay(myScanner, "Thursday");
double fri = getExpensesForDay(myScanner, "Friday");
double sat = getExpensesForDay(myScanner, "Saturday");
double sun = getExpensesForDay(myScanner, "Sunday");
// ...
}
我有一个看起来很简单的问题,但由于某种原因我无法绕过它。基本上我的程序正在导致一个无限循环,我不知道为什么。 下面是我陷入的特定循环: 当我运行它时,它总是问我输入列#。我给它一个数字,它接受这个数字,$response变为True,但while循环继续运行,就好像<code>的$response</code>为false一样。我是Perl新手,所以可能我遗漏了一些东西,但是($response=
该程序应该使用int 0x10在ASCII中打印一个具有给定字符的金字塔,3行的预期结果(下面代码中使用的数量)将是: A. a a a a a 要编译和运行代码,我使用nasm编译它,然后使用qemu进行仿真: 然而,程序get无法打印所有ASCII值。此外,如果有任何针对nasm代码的调试器,可以让您逐行运行,允许您检查寄存器值,这对学习也很有帮助。
问题内容: 我已经存储了一个in in 组件。我传递的和为从父到子。然而,如果在父母一些事件,被触发,因此,儿童被执行。 由于造成了无限循环 (因为它触发了子组件内部的setState()) ,所以我放置了条件。但这不能防止错误。 子组件即如下: 父组件即MonthToDate如下: 我想念什么? 另外,在收到in子组件之后,我想基于那个渲染另一个组件。例如component只能处理一种类型的。如
当用户键入以下内容的答案时:system.out.println(“键入数字”); 它不会继续到我的代码的下一部分。
我发现这样的php代码: 我希望这个循环会执行4次,因为$I变成了对$的引用(对吗?)。然而,循环只执行一次,并输出: a=10,i=10 我不明白为什么它会这样工作。有什么想法吗?
我在尝试一个测试,我写了这个程序。。。 六羟甲基三聚氰胺六甲醚。。。在下面的代码中,我知道我用了“I”而不是“j”,所以为了解决这个问题,我用了这个 我在节目中遇到的问题是- 在上面的代码中,当我删除这个if块时- 这个节目无限期地进行。。。。。。。。。但当我再次放置这个if块时,程序在执行一段时间后自动终止。我也在这个链接上读到了这一点,但它展示了java的例子 它们显示了负值的原因,但在我的程