程序陷入了while循环?

时间:2019-09-09 22:05:30

标签: java

我需要编写一个程序,用输入的金额计算饮料。它以前工作过,但我不知道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,[名称]可以以$ [#]的价格购买[#]饮料(账单为$ [#])。” 我遇到了一个问题,试图使它显示的帐单的正确数量少于停止工作时输入的初始金额。

1 个答案:

答案 0 :(得分:3)

只需考虑一下这段代码

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

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

您的代码完全不会更改amt,而只会将bill重置为相同的值。