[英]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
进行比较。 由于此变量将存储0
或1
作为输入,因此可以将其声明为int
,这将是准确的。 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.