我坚持使用add/subtract方法来定义一个名为money的类,该类的对象表示美国货币的数量。该类应该有两个类型为int的实例变量,分别表示美元和美分的金额。包括一个构造函数和一个无参数构造函数,其中一个构造函数具有两个类型为int的参数,其中一个构造函数的类型为int,其中一个类型的构造函数用于美元的数量为零美分。包括用于对金额进行加法和减法加法和减法,并返回money类型的值。包括一组合理的访问器和赋值器方法,以及方法equals和toString。
再一次,我被加/减部分卡住了,就是不能确定它。另外,equals部分有点令人困惑。是的,这是家庭作业。我在尽我最大的努力,但需要一点推动力。
请看一下……
public class Money {
private static int dollars;
private static int cents;
public Money()
{
}
public Money(int dollars, int cents)
{
this.dollars = dollars;
this.cents = cents;
}
public Money(int dollars)
{
this.dollars = dollars;
}
public int getDollars() {
return dollars;
}
public void setDollars(int dollars) {
this.dollars = dollars;
}
public int getCents() {
return cents;
}
public void setCents(int cents) {
this.cents = cents;
}
public static Money add(Money m1, Money m2)
{
int cash = m1.dollars + m2.dollars;
int change = m1.cents + m2.cents;
return new Money(dollars, cents);
}
public static int MinusMoney(int m3, int m4)
{
return (m3-m4);
}
public boolean equals(double YourMoney)
{
boolean result;
if (YourMoney > 0)
{
dollars += cents;
result = true;
}
else
{
result = false;
}
return result;
}
public String toString()
{
return ("$" + getDollars() + "." + getCents());
}
public static void main(String[] args)
{
Money MyMoney = new Money(2,30);
System.out.println("You have " + MyMoney.toString());
Money MyMoney1 = new Money(2,30);
Money MyMoney2 = new Money(3,10);
System.out.println("You now have " + Money.add(MyMoney1, MyMoney2));
}
}发布于 2016-02-29 12:42:32
这些要求指出,对对象的操作(如add和subtract)返回一个新实例,而不是更改当前实例。因此:
class Money {
private int dollars;
private int cents;
public Money(int dollars, int cents) {
if (dollars < 0 || cents < 0)
throw new IllegalArgumentException("Negative dollars or cents");
this.dollars = dollars;
this.cents = cents;
}
public Money add(Money other) {
int cents = this.cents + other.cents;
return new Money(this.dollars + other.dollars + cents / 100, cents % 100);
}
}对于equals,这通常被定义为覆盖Object.equals,这意味着它需要接受Object而不是double
public boolean equals(Object other) {
return other != null && other.getClass() == Money.class
&& this.dollars == (Money)other.dollars
&& this.cents == (Money)other.cents;
}发布于 2016-02-29 13:01:36
自从发帖后,我有了一点更新。我算出了加/减,它起作用了。感谢您的相等部分,但其中出现了一个问题。
public boolean equals(Object other) {
return other != null && other.getClass() == Money.class
&& this.dollars == (Money)other.dollars
&& this.cents == (Money)other.cents关于other.getClass()的部分...Are你指的是Money类,或者这是我需要添加更多方法的东西?
public class Money {
private int dollars;
private int cents;
public Money()
{
}
public Money(int dollars, int cents)
{
this.dollars = dollars;
this.cents = cents;
}
public Money(int dollars)
{
this.dollars = dollars;
}
public int getDollars() {
return dollars;
}
public void setDollars(int dollars) {
this.dollars = dollars;
}
public int getCents() {
return cents;
}
public void setCents(int cents) {
this.cents = cents;
}
public static Money add(Money m1, Money m2)
{
int dollars1 = m1.getDollars();
int dollars2 = m2.getDollars();
int cents1 = m1.getCents();
int cents2 = m2.getCents();
int sumDollars = dollars1 + dollars2;
int sumCents = cents1 + cents2;
if(sumCents > 100)
{
sumDollars = sumDollars +1;
sumCents = sumCents - 100;
}
Money output = new Money(sumDollars, sumCents);
return output;
}
public static Money minus(Money m1, Money m2)
{
int dollars1 = m1.getDollars();
int dollars2 = m2.getDollars();
int cents1 = m1.getCents();
int cents2 = m2.getCents();
int sumDollars = dollars1 - dollars2;
int sumCents = cents1 - cents2;
if(sumCents > 100)
{
sumDollars = sumDollars +1;
sumCents = sumCents - 100;
}
Money output = new Money(sumDollars, sumCents);
return output;
}
public boolean equals(double YourMoney)
{
boolean result;
if (YourMoney > 0)
{
dollars += cents;
result = true;
}
else
{
result = false;
}
return result;
}
public String toString()
{
return ("$" + getDollars() + "." + getCents());
}
public static void main(String[] args)
{
Money MyMoney = new Money(2,30);
System.out.println("You have " + MyMoney.toString());
Money MyMoney1 = new Money(12,30);
Money MyMoney2 = new Money(7,10);
System.out.println("You now have " + Money.minus(MyMoney1, MyMoney2));
}
}发布于 2016-02-29 13:54:04
你使用了两个属性,一个是美元,一个是美分,这让事情变得复杂起来。在method itself.Then中,您可以简单地将美元转换为美分并传递美分,或者将美元转换为美分。使用method可以轻松地执行计算。你可以通过以下方式来完成
totalcents1= dollar1*100 +cent1;
totalcents2= dollar2*100 + cent2;
//for add
return totalcents1+totalcents2;
//for substract do check which is greater
return totalcents1-totalcents2;1美分对1美元的反向过程
https://stackoverflow.com/questions/35692043
复制相似问题