3

携帯電話をシミュレートしようとしています。次のメソッドを作成しました。

  1. ロード
  2. 電話
  3. sendTextMessage
  4. getLoad
  5. getTotalMinutesCalled
  6. 変更率
  7. printSummary
  8. passLoadTo

私の問題は、オブジェクトをpassLoadTo()メソッドに渡し、そのオブジェクトの概要を出力しても、そのオブジェクトの状態が変わらないことです。

これが私がやろうとしていることです:

public class MobilePhone {

    private double credit;
    private int totalMinutes;
    private double ratePerCall;
    private int numOfText;

    MobilePhone()
    {
        credit = 0;
        totalMinutes = 0;
        ratePerCall = 6.50;
        numOfText = 0;
    }

    public void load(double pesos) {
        if(pesos > 25) {
            credit = credit + pesos;
        } else {
            //System.out.println("The attempting to use this service is forbidden.");
            //System.out.println();
        }
    }

    //other code

    public void printSummary() {
        System.out.printf("Credit left: P%.2f" ,getLoadLeft());
        System.out.println();
        System.out.println("Total call duration "+getTotalMinutesCalled()+" mins");
        System.out.printf("Rate per call: P%.2f" ,ratePerCall);
        System.out.println();
        System.out.println("Number of text message send: " +getNumTextMessage());
        System.out.println();
    }

    public void passLoadTo(MobilePhone dest, double amount) {
        if(credit > amount) {
            credit = credit - amount;
            dest.load(amount);  
        }  else {
            System.out.println("fail");
            System.out.println("The attempting to use this service is forbidden.");
            System.out.println();
        }

    }
}

このコードはテスト用です。

public class Main {
    public static void main(String[] args) {

        MobilePhone mp = new MobilePhone();
        MobilePhone mp1 = new MobilePhone();

        mp.load(30);
        mp.printSummary();
        mp.changeRate(1);
        mp.printSummary();


        mp.call(1);
        mp.printSummary();

        System.out.println(mp.getTotalMinutesCalled());

        mp.passLoadTo(mp1, 30);
        mp.printSummary();

        mp1.printSummary();
    }
}

私が欲しいのは、2 つのモバイル オブジェクト (mp と mp1) を作成して mp.passLoadTo(mp1,1) メソッドを呼び出すたびに、mp1 サマリーのサマリーに mp から mp1 に追加した負荷が出力されることです。

4

1 に答える 1

2

あなたの主な問題はこれです:

 if(credit > amount) {

クレジットが金額より大きいかどうかを確認していますが、30 をロードして 30 を消費しているだけなので、失敗し(30 > 30)ます。

于 2013-06-28T16:53:24.783 に答える