簡體   English   中英

Java加法減法用錢

[英]Java addition subtraction with money

我試圖增加和減去美元和美分,但我遇到了超過100美分和0美分以下的麻煩。 我的代碼適用於添加任何內容,直到我需要將100美分兌換成1美元。 我在將代碼寫入代碼時遇到了麻煩,但我明白將美分兌換成美元需要做些什么。

FYI這是一個類,這就是為什么我有靜態方法加法/減法和類方法加法/減法的代碼

我的代碼:

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

請考慮一下:

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

我更新了你的錢類來解決問題。

錢添加

100美分是1美元,因此您可以將美元初始化為:

this.dollars = dollar+cent / 100;

分數的數量等於除法的余數100

this.cents = cents % 100

通過這種方式,美分將始終在0-99之間。

錢減法

雖然您的分數低於零,但您可以通過減少美元金額來借入100美分。

更新的錢類

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

我會寫一個if聲明說如果美分> = 100然后加入美元靜態貨幣添加(貨幣,錢幣2){int adddollars = money.dollars + money2.dollars; int addcents = money.cents + money2.cents;

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

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

至於你的減法方法,我會把類似靜態貨幣減法(貨幣貨幣,貨幣貨幣2){int subtractdollars = money.dollars-money2.dollars; 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