【发布时间】:2015-01-13 19:49:12
【问题描述】:
我正在尝试加减美元和美分,但在超过 100 美分和低于 0 美分时遇到了麻烦。我的代码可以很好地添加任何东西,直到我需要将 100 美分转换为一美元。我无法将我的话转化为代码,但我了解将美分转换为美元需要做什么。
仅供参考,这是一个类,所以我有静态方法加法/减法和类方法加法/减法的代码
我的代码:
package moneyapp;
public class MoneyApp {
public static void main(String[] args)
{
Money money1=new Money(99,99);
Money money6=new Money(100,00);
Money money7=new Money(0,1);
add(money1,money7);
System.out.println("The sum of "+money1+" and "+money7+" is "+money1.add(money7));
subtract(money6,money7);
System.out.println("The difference of "+money6+" and "+money7+" is "+money6.subtract(money7));
}
static Money add(Money money, Money money2)
{
int adddollars=money.dollars+money2.dollars;
int addcents=money.cents+money2.cents;
Money addmoney=new Money(adddollars,addcents);
System.out.println(addmoney.toString());
return addmoney;
}
static Money subtract(Money money, Money money2)
{
int subtractdollars=money.dollars-money2.dollars;
int subtractcents=money.cents-money2.cents;
Money subtractmoney=new Money(subtractdollars,subtractcents);
System.out.println(subtractmoney.toString());
return subtractmoney;
}
}
类代码:
package moneyapp;
public class Money
{
int dollars;
int cents;
public Money()
{
dollars=0;
cents=0;
}
public Money(int dollar, int cent)
{
dollars=dollar;
cents=cent;
}
public Money(int dollar)
{
dollars=dollar;
cents=00;
}
public String toString()
{
if(cents<10)
{
return "$"+dollars+"."+"0"+cents;
}
else
{
return "$"+dollars+"."+cents;
}
}
public int getDollars()
{
return dollars;
}
public int getCents()
{
return cents;
}
public void setDollars(int dollars)
{
this.dollars=dollars;
}
public void setCents(int cents)
{
this.cents=cents;
}
public Money add(Money other)
{
int dol=dollars+other.dollars;
int cen=cents+other.cents;
Money answer=new Money(dol,cen);
return answer;
}
public Money subtract(Money other)
{
int dol=dollars-other.dollars;
int cen=cents-other.cents;
Money answer=new Money(dol,cen);
return answer;
}
}
【问题讨论】:
-
如果是我,我可以考虑不同时拥有两个 int 美元;整数分;相反,只有 int 美分;那么 10.55 美元就是 1055 美分。这样算术很简单。您可以使用通常的算术运算符。
-
将一个数字除以 100 (/) 可以得到确切的美元金额,而除以 100 (%) 将得到剩余的美分数。
-
这两个 cmets 都是正确的——你想使用“标量”数学,使用一个缩放的值来跟踪,这样它就可以保存你所有的总和。然后,您可以使用除法和 mod 转换为您想要的输出格式。
-
以上三个 cmets 都是正确的,但请记住,有时您可能会得到负值,并且使用整数除法和 mod 会显示 -$10.60 为 -$11 和 +40 美分。
标签: java class netbeans static addition