Java While 循环以负数中断

标签 java loops while-loop

我明天正在处理的这个 java 项目有问题。我应该创建一个 while 循环,提示用户输入商品的价格,并以任何负数结束循环,该负数无法计算。然后,我必须分别使用变量 3、2、1、0 提示用户其成员(member)折扣级别 plat 15% off/gold 7%/silver 3%/non member 0% off。对于无效的成员(member)状态输入,用户需要使用 do-while 循环再次输入有效的成员(member)状态。然后我使用商品总和的适当折扣%,然后对其征税。最后几个步骤很简单,但我陷入了循环。

我做了一些搜索,并在该网站上找到了这段代码,它完成了第一个 while 循环的工作,但没有以我需要的方式结束。 Using While Loop instead of a For Loop in Java to ask User Input

我修改了它以满足我的需要,但我仍然找不到一种方法使 throwable = 为任何负数,即 <0。这可能吗?我很确定有一种方法可以更简单地做到这一点,而无需尝试/捕获,但我还没有学过。这是我稍微修改过的版本

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 <0),但我收到了大量错误。

我非常感谢您提供的任何帮助。 谢谢。

最佳答案

这听起来像是家庭作业。我知道很多老师反对学生使用“break”来退出循环。我将这样做。不需要 try-catch 语句。

public static void main(String[]args) {

Scanner keyboard = new Scanner(System.in);
    double input = 0.0;
    double totalPrice = 0.0;

    do {
        totalPrice += input;
        input = keyboard.nextDouble();
    }

    while(input >= 0);
}

使用 while 循环:

public static void main(String[]args) {

Scanner keyboard = new Scanner(System.in);
    double totalPrice = 0.0;
    double input = keyboard.nextDouble();

    while(input >= 0) {
    totalPrice += input;
    input = keyboard.nextDouble();
    }
}

关于Java While 循环以负数中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22153033/

相关文章:

java - 两个用户输入不同,但程序将它们识别为相同

php - mysqli_fetch 循环不工作

Java时间不同步

java - 不可变类型需要复制构造函数吗?

macos - Mac OS X 上多个 JDK 的含义

Java Do 和 While 验证

c - 在链接列表中查找循环(​​获取段错误)

java - 如何对从 HashMap 获得的字符串的 ArrayList 进行优先排序?

c - 测试 “if (i && (i- 1))”是什么意思?

java - 关于用户输入的 BigDecimal 计算错误