I am trying to add and subtract dollars and cents but I am having trouble with going over 100 cents and under 0 cents. My code works fine for adding anything until I need to convert 100 cents into a dollar. I'm having trouble putting my words into code, but I understand what needs to be done to convert cents into a dollar.
FYI this is for a class so that is why I have code for static method addition/subtraction and class method addition/subtraction
My code:
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;
}
}
Class code:
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;
}
}
I would put an if statement saying that if cents are >= 100 then add to the dollars static Money add(Money money, Money money2) { int adddollars=money.dollars+money2.dollars; int addcents=money.cents+money2.cents;
As for your subtraction method i would put something like static Money subtract(Money money, Money money2) { int subtractdollars=money.dollars-money2.dollars; int subtractcents=money.cents-money2.cents;
I updated your money class to fix the problem.
Money addition
100 cents is 1 dollar, so you can initialize dollar as:
The amount of cents is than equal to the remainder of the division by 100
In this way, cents will always be between 0-99.
Money subtraction
While your amount of cents is lower than zero, you can borrow 100 cents by decreasing the amount of dollars.
Updated Money Class
Consider this instead: