عرض مشاركة واحدة
منتديات طلاب وطالبات جامعة الملك عبد العزيز منتديات طلاب وطالبات جامعة الملك عبد العزيز
قديم 12-05-2011, 03:59 AM   #4

SPIDER

جامعي

الصورة الرمزية SPIDER

 
تاريخ التسجيل: Aug 2008
التخصص: Computer Engineering
نوع الدراسة: إنتظام
المستوى: متخرج
الجنس: ذكر
المشاركات: 939
افتراضي رد: ممكن اعرف الخطأ في هذآ الكود *_^

مثل ما تكرم أخوي أحمد، فيه بعض الأخطاء المنطقية بالكود، وأحمد ما قصر وصحح الكود. عموماً السؤال لم يحدد ما إذا كان يمكن للمستخدم إدخال أعداد سالبة أم لا، لذلك كتبت لك كود ربما فيه بعض التعقيد ولكن يقبل negative dollars و negative cents



كود:
public class Money
{
    private int dollars;
    private int cents;
    private boolean negativeZero = false;
    
    public Money()
    {
        this(0, 0);
    }
 
    public Money(int dollars)
    {
        this(dollars, 0);
    }
    
    public Money(int dollars, int cents)
    {
        this.dollars = dollars;
        setCents(cents);
    }
 
    public static Money minus(Money amount1, Money amount2)
    {
        Money amount3 = new Money();
        amount3.setDollars(amount1.getDollars() - amount2.getDollars());
        amount3.setCents(amount1.getCents() - amount2.getCents());
        return amount3;
    }
    
    public void setDollars(int dollars)
    {
        this.dollars = dollars;
    }
    
    public int getDollars()
    {
        return dollars;
    }
    
    public int getCents()
    {
        return cents;
    }
    
    public void setCents(int cents)
    {
        negativeZero = false;
        if(dollars > 0)
        {
            if(cents >= 100)
            {
                this.cents = cents % 100;
                dollars += cents / 100;
                return;
            }
            if(cents < 100 && cents >= 0)
            {
                this.cents = cents;
                return;
            }
            if(cents < 0 && cents > -100)
            {
                dollars--;
                this.cents = 100 + cents;
                return;
            }
            if(cents <= -100)
            {
                dollars += (cents / 100 - 1);
                this.cents = 100 + (cents % 100);
                return;
            }
        }
        else if(dollars == 0)
        {
            if(cents >= 100)
            {
                this.cents = cents % 100;
                dollars += cents / 100;
                return;
            }
            if(cents < 100 && cents >= 0)
            {
                this.cents = cents;
                return;
            }
            if(cents < 0 && cents > -100)
            {
                this.cents = - cents;
                negativeZero = true;
                return;
            }
            if(cents <= -100)
            {
                dollars += cents / 100;
                this.cents = -1 * (cents % 100);
                return;
            }
        }
        else
        {
            if(cents >= 100)
            {
                this.cents = 100 - (cents % 100);
                dollars += (cents / 100) + 1;
                return;
            }
            if(cents < 100 && cents > 0)
            {
                dollars++;
                this.cents = 100 - (cents % 100);
                return;
            }
            if(cents == 0)
            {
                this.cents = cents;
                return;
            }
            if(cents < 0 && cents > -100)
            {
                this.cents = - cents;
                return;
            }
            if(cents <= -100)
            {
                dollars += cents / 100;
                this.cents = -1 * (cents % 100);
                return;
            }
        }
    }
    
    public boolean equals(Money amount)
    {
        return ( dollars == amount.getDollars() && cents == amount.getDollars() );
    }
    
    public String toString()
    {
        String result;
        if (dollars < 0 || negativeZero)
            result = "- $";
        else
            result = "$";
        if (cents < 10)
            result += Math.abs(dollars) + ".0" + cents;
        else
            result += Math.abs(dollars) + "." + cents;
        return result;
    }
    
    public Money add(Money m)
    {
        Money amount = new Money();
        amount.setDollars(dollars + m.getDollars());
        amount.setCents(cents + m.getCents());
        return amount;
    }
 
    public Money minus(Money m)
    {
        Money amount = new Money();
        amount.setDollars(dollars - m.getDollars());
        amount.setCents(cents - m.getCents());
        return amount;
    }
    
    public static void main(String[] args)
    {
        System.out.println("10 dollars + 140 cents: " + new Money(10,140).toString());
        System.out.println("10 dollars + 40 cents: " + new Money(10,40).toString());
        System.out.println("10 dollars + 0 cents: " + new Money(10,0).toString());
        System.out.println("10 dollars + -40 cents: " + new Money(10,-40).toString());
        System.out.println("10 dollars + -140 cents: " + new Money(10,-140).toString());
        System.out.println();
        System.out.println("0 dollars + 140 cents: " + new Money(0,140).toString());
        System.out.println("0 dollars + 40 cents: " + new Money(0,40).toString());
        System.out.println("0 dollars + 0 cents: " + new Money(0,0).toString());
        System.out.println("0 dollars + -40 cents: " + new Money(0,-40).toString());
        System.out.println("0 dollars + -140 cents: " + new Money(0,-140).toString());
        System.out.println();
        System.out.println("-10 dollars + 140 cents: " + new Money(-10,140).toString());
        System.out.println("-10 dollars + 40 cents: " + new Money(-10,40).toString());
        System.out.println("-10 dollars + 0 cents: " + new Money(-10,0).toString());
        System.out.println("-10 dollars + -40 cents: " + new Money(-10,-40).toString());
        System.out.println("-10 dollars + -140 cents: " + new Money(-10,-140).toString());
        System.out.println();
    }
}
ويمكنك تعديل الكود وتبسيطه بحيث إن أدخل المستخدم أرقام سالبة تظهر له رسالة تفيد بأنه لا يمكن إدخال أعداد سالبة


بالتوفيق ...

 

توقيع SPIDER  

 

سبحان الله وبحمده .. سبحان الله العظيم

[من برمجتي] ODUS Auto-Adder v1.1 + الكود المصدري

أعتذر عن عدم تمكني على الرد على جميع الرسائل الخاصة ... لا يمكنني إرسال أكثر من رسالة واحدة خلال نصف ساعة تقريباً

 

SPIDER غير متواجد حالياً   رد مع اقتباس