简体   繁体   English

Java加法减法用钱

[英]Java addition subtraction with money

I am trying to add and subtract dollars and cents but I am having trouble with going over 100 cents and under 0 cents. 我试图增加和减去美元和美分,但我遇到了超过100美分和0美分以下的麻烦。 My code works fine for adding anything until I need to convert 100 cents into a dollar. 我的代码适用于添加任何内容,直到我需要将100美分兑换成1美元。 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 FYI这是一个类,这就是为什么我有静态方法加法/减法和类方法加法/减法的代码

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;
    }
}

Consider this instead: 请考虑一下:

public class Money {

    private int m;

    public Money(int m) {
        this.m = m;
    }

    public int getDollars() {
        return m / 100;
    }

    public int getCents() {
        return m % 100;
    }

    public int get() {
        return m;
    }

    public Money add(Money other) {
        return new Money(m + other.get());
    }

    public Money subtract(Money other) {
        return new Money(m - other.get());
    }
}

I updated your money class to fix the problem. 我更新了你的钱类来解决问题。

Money addition 钱添加

100 cents is 1 dollar, so you can initialize dollar as: 100美分是1美元,因此您可以将美元初始化为:

this.dollars = dollar+cent / 100;

The amount of cents is than equal to the remainder of the division by 100 分数的数量等于除法的余数100

this.cents = cents % 100

In this way, cents will always be between 0-99. 通过这种方式,美分将始终在0-99之间。

Money subtraction 钱减法

While your amount of cents is lower than zero, you can borrow 100 cents by decreasing the amount of dollars. 虽然您的分数低于零,但您可以通过减少美元金额来借入100美分。

Updated Money Class 更新的钱类

public class Money {
    public final int dollars;
    public final int cents;

    public Money() {
        dollars = 0;
        cents = 0;
    }

    public Money(int dollar, int cent) {
        dollars = dollar + cent / 100;
        cents = cent % 100;
    }

    public Money(int dollar) {
        dollars = dollar;
        cents = 0;
    }

    public String toString() {
        return String.format("$%d.%02d", dollars, 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;

        while (cents < 0) {
            --dol;
            cen += 100;
        }
        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; 我会写一个if声明说如果美分> = 100然后加入美元静态货币添加(货币,钱币2){int adddollars = money.dollars + money2.dollars; int addcents=money.cents+money2.cents; int addcents = money.cents + money2.cents;

    if(addcents >= 100){
        adddollars++;
    }

    Money addmoney=new Money(adddollars,addcents);
    System.out.println(addmoney.toString());
    return addmoney;
}

As for your subtraction method i would put something like static Money subtract(Money money, Money money2) { int subtractdollars=money.dollars-money2.dollars; 至于你的减法方法,我会把类似静态货币减法(货币货币,货币货币2){int subtractdollars = money.dollars-money2.dollars; int subtractcents=money.cents-money2.cents; int subtractcents = money.cents-money2.cents;

    if(subtractcents < 0)
        money.dollars--;
    money.cents=money.cents + 100;
    subtractcents= money.cents-money2.cents;


    Money subtractmoney=new Money(subtractdollars,subtractcents);
    System.out.println(subtractmoney.toString());
    return subtractmoney;
}  

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM