繁体   English   中英

新手Java技巧计算器

[英]Java Tip Calculator for newbie

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

我对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");
        }

    }

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

billPerPerson = total / split;

0.0除以得到Infinity

笔记:

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

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

愚蠢的错误。

更改

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();

因为您永远都不会更改split,就像所有double变量一样,split被初始化为0.0。

另外,您应在适当的地方使用整数,因为并非所有数字都应为双精度。 甚至更好,请使用“ y”和“ n”字符。

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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM