Java家庭作业(初学者)-我认为我的数学或声明有问题?

Java家庭作业(初学者)-我认为我的数学或声明有问题?,java,math,Java,Math,对于我的CS1类,我们必须用Java编写一个程序,要求用户输入以下内容:; -餐厅账单金额 -如果有3种选择,他们愿意给多少小费 然后,程序将计算原始账单金额、小费、税款和最终账单金额——打印在屏幕上 我能够得到所有这些提示和打印,但数学是关闭的。。。有人能给点建议吗?这对我来说是新的,所以我不确定我到底错过了什么或错过了什么。我尝试过很多不同的事情,这就是我现在的处境。谢谢大家! 我尝试过添加和删除括号,更改声明方式,查找语法错误 /*Description: This program cal

对于我的CS1类,我们必须用Java编写一个程序,要求用户输入以下内容:; -餐厅账单金额 -如果有3种选择,他们愿意给多少小费

然后,程序将计算原始账单金额、小费、税款和最终账单金额——打印在屏幕上

我能够得到所有这些提示和打印,但数学是关闭的。。。有人能给点建议吗?这对我来说是新的,所以我不确定我到底错过了什么或错过了什么。我尝试过很多不同的事情,这就是我现在的处境。谢谢大家!

我尝试过添加和删除括号,更改声明方式,查找语法错误

/*Description: This program calculates a restaurant bill.
 */

import java.util.Scanner;

public class MiniProject3 {
    public static void main(String[] args) {
        Scanner keyboard = new Scanner(System.in);
        System.out.print("What is the check amount? ");
        double checkAmount = keyboard.nextDouble();
        System.out.print("What type of tip would you like to leave? ");
        System.out.print("Enter 1 for good tip (20%) ");
        System.out.print("Enter 2 for average tip (15%) ");
        System.out.print("Enter 3 for poor tip (10%) ");
        int tipChoice = keyboard.nextInt();
        double grandTotal;
        double taxTotal = (checkAmount * 0.07);
        double subTotal = (checkAmount + taxTotal);
        if (tipChoice == 1)
            grandTotal = 0.20 * subTotal;
        if (tipChoice == 2)
            grandTotal = 0.15 * subTotal;
        else
            grandTotal = 0.10 * subTotal;
        System.out.print("total check: $" + checkAmount);
        System.out.println();
        System.out.print("tax: $" + taxTotal);
        System.out.println();
        System.out.print("tip: $" + (grandTotal - subTotal));
        System.out.println();
        System.out.print("final bill: $" + grandTotal);
    }
}

目前没有错误消息,但数学远远不够。

有两种方法可以解决此问题:

  • 将计算出的小费选择保存在另一个变量中,然后将该变量添加到小计中以获得总计

  • 用1.20乘以20%,而不是用0.20乘以所有小费,就可以直接得到总数


  • 如果您选择选项1,则grandTotal将是您根据计算结果支付的小费总额
    0.20*小计
    (小计的20%)。这意味着最终账单将打印总小费金额,而不是最终账单金额。我建议您检查您的命名和计算。

    在程序中使用以下代码行

    if (tipChoice == 1)
            grandTotal = subTotal + 0.20 * subTotal;
    if (tipChoice == 2)
            grandTotal = subTotal + 0.15 * subTotal;
    else
            grandTotal = subTotal + 0.10 * subTotal;
    

    我建议您仔细阅读计算方法
    grandTotal
    。或者,计算尖端并将其存储在单独的变量中。然后从
    subTotal
    tip
    计算
    grandTotal
    。基本上,你需要编码如何用笔和纸进行计算。输入是什么,预期输出和实际输出是什么?@KarthikeyanVaithilingam-当斯蒂芬已经发现问题时,问这些都没有意义。凯瑟琳,除了你在这里犯的错误,您将得到一些浮点错误,使您的金额显示的小数位数过多。您可能想在深入阅读
    NumberFormat
    类之前先了解一下。因为这门课可以帮助你把事情四舍五入到小数点后两位。用Excel之类的东西做数学原型,很容易使用,而且在你把它写进代码之前就可以得到正确的结果。数学中的错误是很明显的。
    if (tipChoice == 1)
            grandTotal = subTotal + 0.20 * subTotal;
    if (tipChoice == 2)
            grandTotal = subTotal + 0.15 * subTotal;
    else
            grandTotal = subTotal + 0.10 * subTotal;