【问题标题】:My Do-While loop doesn't check my condition?我的 Do-While 循环不检查我的状况?
【发布时间】:2021-12-14 00:46:45
【问题描述】:

我正在使用以下代码在菜单上下订单的以下方法:

   public static double menu_received() {

        Scanner input = new Scanner(System.in);
        int userResponse, total = 0;

        do {

            System.out.println();
            System.out.println("Here is our menu:");
            System.out.println("1. Bulgogi -- $15.00");
            System.out.println("2. Kalbi -- $18.00");
            System.out.println("3. Kimchi Fried Rice -- $16.00");
            System.out.println("Please choose one option at one time using the number (0 to end the order):");

            userResponse = input.nextInt();
            System.out.println("User Menu choice is " + userResponse);

            if (userResponse == 1) {
                System.out.println("Thank you for ordering Bulgogi");
                total = total + 15;
                System.out.println("Your total is $" + total);
            }

            if (userResponse == 2) {
                System.out.println("Thank you for ordering Kalbi");
                total = total + 18;
                System.out.println("Your total is $" + total);
            }

            if (userResponse == 3) {
                System.out.println("Thank you for ordering Kimichi Fried Rice");
                total = total + 16;
                System.out.println("Your total is $" + total);
            }

        } while (userResponse != 0);

        double total2 = total + 2.55;
        // total = (double) total + 2.55;
        System.out.println("Your total after tax is $" + total2);

        return total2;
    }

但是我遇到的问题是,当我调用它时,它没有按我的意愿响应。即使在我输入 0 后它也不会停止调用菜单。while(userResponse != 0) 中我的条件是否有问题有人可以向我解释为什么以及如何更正它吗?谢谢

这是我的输出:

>
Here is our menu:
1. Bulgogi -- $15.00
2. Kalbi -- $18.00
3. Kimchi Fried Rice -- $16.00
Please choose one option at one time using the number (0 to end the order):
1
User Menu choice is 1
Thank you for ordering Bulgogi
Your total is $15

Here is our menu:
1. Bulgogi -- $15.00
2. Kalbi -- $18.00
3. Kimchi Fried Rice -- $16.00
Please choose one option at one time using the number (0 to end the order):
1
User Menu choice is 1
Thank you for ordering Bulgogi
Your total is $30

Here is our menu:
1. Bulgogi -- $15.00
2. Kalbi -- $18.00
3. Kimchi Fried Rice -- $16.00
Please choose one option at one time using the number (0 to end the order):
0
User Menu choice is 0
Your total after tax is $32.55

Here is our menu:
1. Bulgogi -- $15.00
2. Kalbi -- $18.00
3. Kimchi Fried Rice -- $16.00
Please choose one option at one time using the number (0 to end the order):
0
User Menu choice is 0
Your total after tax is $2.55

PS:不要介意“你的税后总额是 XXXX”的说法——它来自另一个方法。

【问题讨论】:

  • 从输出中,您似乎调用了该​​方法两次。
  • 哦,所以这与我主要的这条线有关:menu_received(); System.out.println("Value of menu_received : " + menu_received()); tip_calculator(menu_received());
  • @Sam,不,这完全不相关,也不是这个问题的答案。
  • 我用以下行更正了它:double value = menu_received(); tip_calculator(value); 它有效,谢谢!

标签: java while-loop conditional-statements do-while


【解决方案1】:

如果我理解您的上述评论,请将您的主要内容从:

menu_received(); // First call
System.out.println("Value of menu_received : " + menu_received()); // Second call
tip_calculator(menu_received()); // Third call

收件人:

double result = menu_received(); // Only one call
System.out.println("Value of menu_received : " + result);
tip_calculator(result);

【讨论】:

  • 这是正确的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-29
  • 2011-03-10
  • 1970-01-01
  • 2020-11-26
  • 2016-09-23
  • 2020-10-13
相关资源
最近更新 更多