在我的任务中,我必须为一家燃气公司创建一个燃气表系统,以允许员工创建新的客户帐户并修改名称和单位成本等数据,以及从他们的帐户中提取(存入)资金。
我已经创建了我的构造函数,甚至添加了一个重载方法,尽管我目前在启动我命名为 deposit()
的方法时遇到了问题,这应该会花钱来自用户帐户,而 recordUnits()
等其他方法允许员工导入燃气表读数,了解客户使用了多少单位,并更新该客户帐户的余额,这基本上是客户欠公司的。
当尝试启动存款方法时仅使用预设信息测试程序时,我得到了这个
Account.deposit(Double.MAX_VALUE);
我不太清楚这意味着什么,而且似乎无法找到克服它的方法!
测试数据和代码如下:
public class TestGasAccount
{
public static void main (String [] args)
{
GasAccount Account = new GasAccount (223,"Havana","TQ",1000);
Account.getAccNo();
Account.getName();
Account.getAddress();
Account.getUnits();
Account.getBalance();
Account.recordUnits(1000);
Account.getUnits();
Account.getBalance();
Account.deposit(Double.MAX_VALUE);
}
}
public class GasAccount
{
private int intAccNo;
private String strName;
private String strAddress;
private double dblBalance;
private double dblUnits;
protected double dblUnitCost = 0.02;
public GasAccount(int intNewAccNo,String strNewName,String strNewAddress,double dblNewUnits)
{
intAccNo = intNewAccNo;
strName = strNewName;
strAddress = strNewAddress;
dblUnits = dblNewUnits;
dblBalance = dblNewUnits * dblUnitCost;
}
public GasAccount (int intNewAccNo, String strNewName, String strNewAddress)
{
intAccNo = intNewAccNo;
strName = strNewName;
strAddress = strNewAddress;
}
public double deposit (Double dblDepositAmount)
{
dblBalance = dblBalance - dblDepositAmount;
return dblBalance;
}
public String recordUnits (double dblUnitsUsed)
{
double dblTempBalance;
dblTempBalance = dblUnitsUsed * dblUnitCost;
dblBalance = dblBalance + dblTempBalance;
dblUnits = dblUnits + dblUnitsUsed;
return "Transaction Successful";
}
public int getAccNo ()
{
System.out.println(intAccNo);
return intAccNo;
}
public String getName()
{
System.out.println(strName);
return strName;
}
public String getAddress()
{
System.out.println(strAddress);
return strName;
}
public double getBalance()
{
System.out.println("£"+dblBalance);
return dblBalance;
}
public double getUnitCost()
{
return dblUnitCost;
}
public double getUnits ()
{
System.out.println(dblUnits);
return dblUnits;
}
public void updateUnitCost (double dblNewUnitCost)
{
dblUnitCost = dblNewUnitCost;
}
}
最佳答案
Double.MAX_VALUE是 double 可以表示的最大值(大约 1.7*10^308)。
如果您尝试减去数据类型的最大可能值,这应该会导致一些计算问题。
即使在处理金钱时,您也不应该使用浮点值,尤其是四舍五入时这可能会导致问题(那时您的系统中的钱要么多,要么少)。
关于Java double.MAX_VALUE?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16146219/