【发布时间】:2014-03-03 17:17:41
【问题描述】:
我明天要处理的这个 java 项目有问题。我应该做一个 while 循环,提示用户输入项目的价格,并以任何负数结束循环,该负数不能被计算在内。然后我必须分别使用变量 3,2,1,0 提示用户他们的会员折扣级别 plat 15% off/gold 7%/silver 3%/non member 0% off。对于成员状态的无效输入,用户需要使用do-while循环再次输入有效的状态。然后我使用项目总和的适当折扣%,然后对其征税。最后几个步骤很简单,但我陷入了困境。
我进行了一些搜索,并在这个站点上找到了这个代码块,它完成了第一个 while 循环的工作,但没有以我需要的方式结束。 Using While Loop instead of a For Loop in Java to ask User Input
我对其进行了修改以满足我的需要,但我仍然无法找到将 throwable = 设置为任何负数的方法,即
Scanner askPrice = new Scanner(System.in);
BigDecimal totalPrice = new BigDecimal("0");
Scanner keyboard = new Scanner(System.in);
while (true) {
System.out.println("Enter item price or negative number to quit:") ;
try {
double price = askPrice.nextDouble();
totalPrice = totalPrice.add(new BigDecimal(String.valueOf(price)));
}
catch (Throwable t) {
break;
}
System.out.println(totalPrice.toString());
}
我尝试将 try 和 catch 语句转换为 if / else 并将 catch throwable 替换为 else(askPrice
我非常感谢可以提供的任何帮助。 谢谢。
【问题讨论】:
-
是的,有一种方法不需要 try/catch。
break会将自己从while循环中删除,所以你是正确的。尝试做一个简单的if语句来检查price的值,以及是否需要break。 -
不要使用 try/catch -- 完全没有必要。
if (price < 0.0) break;就是你所需要的。 -
另一件事要说,不要抓住
Throwable,而是你的特定Exception,你应该总是处理它,例如打印堆栈跟踪以了解导致错误的原因。 -
谢谢,所有的答案都非常有帮助,我希望我可以勾选每个人。
-
askPrice是Scanner!你不能像else(askPrice <0)那样比较它!你必须像price < 0那样比较它
标签: java loops while-loop