0

Javaコード:

public class Car {

    //variables
    int myStartMiles;
    int myEndMiles;
    double myGallonsUsed;
    int odometerReading;
    double gallons;

    //constructors
    public Car(int odometerReading) {
        this.myStartMiles = odometerReading;
        this.myEndMiles = myStartMiles;
    }

    //methods
    public void fillUp(int odometerReading, double gallons) {
        this.myEndMiles = odometerReading;
        this.gallons = gallons;
    }

    public double calculateMPG() {
        int a = (this.myEndMiles - this.myStartMiles);
        return ((a) / (this.gallons));
    }

    public void resetMPG() {
        myGallonsUsed = 0;
        this.myStartMiles = myEndMiles;
    }

    public static void main(String[] args) {
        int startMiles = 15;
        Car auto = new Car(startMiles);

        System.out.println("New car odometer reading: " + startMiles);
        auto.fillUp(150, 8);
        System.out.println("Miles per gallon: " + auto.calculateMPG());
        System.out.println("Miles per gallon: " + auto.calculateMPG());
        auto.resetMPG();
        auto.fillUp(350, 10);
        auto.fillUp(450, 20);
        System.out.println("Miles per gallon: " + auto.calculateMPG());
        auto.resetMPG();
        auto.fillUp(603, 25.5);
        System.out.println("Miles per gallon: " + auto.calculateMPG()); 
    }
}

これを機能させようとしていますが、目的の出力を取得できません。

望ましい結果は次のとおりです。

New car odometer reading: 15
Miles per gallon: 16.875
Miles per gallon: 16.875
Miles per gallon: 10.0
Miles per gallon: 6.0

私が得ている:

New car odometer reading: 15
Miles per gallon: 16.875
Miles per gallon: 16.875
Miles per gallon: 15.0
Miles per gallon: 6.0

コードの何が問題になっているのか教えていただけますか?紙の上で手作業で実行しようとしています。

4

1 に答える 1

1

問題はあなたのfillUp方法にあります。具体的にはこの行:

this.gallons = gallons;

する必要があります:

this.gallons += gallons;

追加する代わりに割り当てるため、3番目のケースでは次の理由で出力が間違っています。

auto.fillUp(350, 10);
auto.fillUp(450, 20);

を追加してから合計を追加する代わりに、に設定gallons10てから上書きします。20102030

編集:あなたはまたgallons = 0;あなたのresetMPG方法で必要になります。現在、を設定myGallonsUsed = 0していますが、その変数は他の方法では使用されていないため、なぜこれを行っているのかわかりません。

于 2012-09-10T06:54:20.527 に答える