Java新手提示计算器

时间:2014-05-18 01:35:15

标签: java

我希望我能在正确的位置张贴。

我对Java很陌生(这意味着这只是我在'hello world'之外的第三个程序)。

我有一个小费计算器,我正在为作业工作。我没有得到这样的'错误', 但是,分摊账单的方法似乎总是认为每个客户支付“无限”。 我的程序设置在两个类中:tipCalc1和tipCalc2(当然没有创意点)。 除了“无限”问题之外,该程序似乎没有问题。

这是我到目前为止所拥有的。任何帮助表示感谢,谢谢。

***TipCalc1 Class:***

import java.util.Scanner;

public class Tipcalc1
{  
    public static void main(String[] args)
    {
        System.out.println("Welcome to Tip Calculator! ");
        TipCalc2 Calculator = new TipCalc2();
        System.out.println("Please enter the bill amount: ");
        TipCalc2.calBill();
        System.out.println("What percentage would you like to tip?: ");
        Calculator.percTip();

    }

}


***And the tipCalc2 class which does the dirty work:***

import java.util.Scanner;

public class TipCalc2
{
    static double bill;
    double tip;
    double total;
    double split;
    double splitPrompt;
    double Y;
    double N;
    double billPerPerson;

        static Scanner scan = new Scanner(System.in);
        public static void calBill()
        {
             bill = scan.nextDouble();
        }

        public void percTip()
        {
             tip = scan.nextDouble();
            if(tip<1)
            {
                total = bill * tip;
            }
        else total = bill * (tip/100);
        System.out.println("Your total is: " + total);
        Split();
        }


        public void Split()
        {
        System.out.println("Would you like to split the bill? ");
        System.out.println("Enter 1 for YES or 0 for NO: ");

        splitPrompt = scan.nextDouble();
        if(splitPrompt == 0)
        {
            System.out.println("Your total is: " + total);
            System.out.println("Thankyou. Goodbye.");
            System.out.println("End Program");  
        }
        if(splitPrompt == 1)
        {
            System.out.println("How many ways would you like to split the bill? ");
            splitPrompt = scan.nextDouble();
            billPerPerson = total / split;
            System.out.println("Each person pays: " + billPerPerson);
            System.out.println("Thankyou. Goodbye.");
            System.out.println("End Program.");  

        }
        else System.out.println("Invalid Entry");
        }

    }

3 个答案:

答案 0 :(得分:3)

split的默认值(因为您尚未使用其他值初始化)为0.0,因此,当您执行

billPerPerson = total / split;

除以0.0,因此您将获得Infinity

备注:

  • 由于您的变量splitPrompt是双倍且计算机无法以100%的准确度存储实际值,因此不应将其与0.0进行比较。由于此变量将存储01作为输入,因此您可以将其声明为int,这将是准确的。
  • 尝试遵循Java命名约定。对方法/变量使用mixedCase,对类/接口使用CamelCase
  • 在方法split()中,您应该使用if-else if-else结构:

    if(splitPrompt == 0) {
    ...
    }
    else if(splitPrompt == 1) {
    ...
    }
    else {
    ...
    }
    

答案 1 :(得分:1)

愚蠢的错误。

更改

System.out.println("How many ways would you like to split the bill?
splitPrompt = scan.nextDouble();

System.out.println("How many ways would you like to split the bill?
split = scan.nextDouble();

因为你永远不会改变分裂,就像所有双变量一样,它被初始化为0.0。

此外,您应该在适当的地方使用ints,因为并非所有数字都应该是双倍的。或者甚至更好,使用'y'和'n'字符。

答案 2 :(得分:0)

TipCalc2类

//Total = **bill** * (gets percentage in decimal 15 = 0.15) + **bill**

第18行必须为:

total = bill * (tip / 100) + bill;

第36/37行必须为:

split = splitPrompt = scan.nextInt();
billPerPerson = total / split;

//You're dividing billPerPerson = total by ZERO (split);

第36/37行原始:

billPerPerson = total / split;