0

我需要编写一个程序来计算输入金额的饮料。它以前可以工作,但我不知道 NetBeans 是否只是厌倦了做一些事情,或者因为它突然无法通过输入。我不知道我需要改变什么才能让它再次正常运行,我只能假设它是被卡住的 while 循环。

我尝试过更改数字、删除空格、更改 while 条件、移动换行符,但没有任何效果。这是官方的问题:约翰尼在酒吧,他要去喝啤酒。编写一个程序,计算他可以用他所拥有的钱购买多少啤酒。该程序读取啤酒的数量和价格,并打印出他能买得起多少啤酒。还要考虑税收(10%)和小费(20%)。以下列形式打印结果:如果啤酒价格为 3.25 美元,约翰尼可以花 15 美元喝 3 杯啤酒(他将支付 12.87 美元)。

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    double br;
    double amt;
    double taxPrc;
    double bill;
    int count = 0;
    System.out.printf("enter ur name: ");
    String name = sc.nextLine();
    System.out.printf("Enter price of beverage: $");
    br = sc.nextDouble();
    System.out.printf("Enter amt %s has: $", name);
    amt = sc.nextDouble();
    taxPrc = br * 1.1;
    bill = taxPrc * 1.2;

    while(bill<amt) {
        count++;
        bill = taxPrc * 1.2;
    }
    System.out.printf("if bevergae costs $"+br+", "+name+" can have "+count+" beverges for $"+amt+" (the bill will be $"+bill+").");
    System.out.println();
}

我的编辑没有显示有任何问题。该文件运行:“输入您的姓名(姓名),输入饮料价格$(#),输入amt(姓名)有$(输入号码)”然后它停止显示任何内容并让我保持空白,直到我停止它。它应该继续“如果饮料花费 $X,[name] 可以以 $[#] 的价格购买 [#] 种饮料(账单将是 $[#])。” 我在试图让它显示正确的帐单号码时遇到问题,该号码少于停止工作时输入的初始金额。

4

1 回答 1

3

想一想这段代码本身

bill = taxPrc * 1.2;
while(bill<amt) {
        count++;
        bill = taxPrc * 1.2;
    }

? while循环中的什么改变了billamt?请记住,while 循环会一直运行,直到其条件语句(在本例中bill<amt)中的某些内容发生变化。由于 while 循环中的任何内容都不会更改条件语句中的任何内容,因此它会永远运行。

您的代码根本没有改变amt,只是不断重置bill为相同的值。

于 2019-09-09T22:15:18.593 回答