簡體   English   中英

Java中的ArrayList僅打印列表中的最后一個對象

[英]ArrayList in Java only prints the last object in the List

我正在上學校的在線計算機科學課程,遇到了一個顛簸,兩天后我仍然不明白,我轉向了社區。

我已經編寫了一段代碼,需要打印彈射器的距離。 我將這些對象放在ArrayList中,並為彈射器實例開發了一個類文件。 我希望我的代碼在行的開頭打印距離和MPH的列表(您可以在下面的源文件中看到此列表,並提供我想要的樣子的示例)。 這是我到目前為止開發的代碼:

Catapult.java

public class Catapult {
    static double speed, angle, MPS, Rad, R;

Catapult(double launchSpeed, double launchAngle) {
    angle = launchAngle;
    speed = launchSpeed;

public void convMPHtoMPS() {
    MPS = speed * 0.44704;
}

public void convDegToRad() {
    Rad = Math.toRadians(angle);
}

public void calcDistance() {
    R = (Math.pow(MPS, 2)*Math.sin(2*Rad))/(Math.pow(9.8, 2));
}

public void convMtoFt() {
    R = R * 3.28084;
}

public double getMPH() {
    return speed;
}

public double getAngle() {
    return angle;
}

public double getMetersPerSecond() {
    return MPS;
}

public double getRadians() {
    return Rad;
}

public double getDistance() {
    return R;
}
}

CatapultTester.java

    public static void calcData() {
        int mph = 25;
        for (int i = 0; i < 7; i++) {
            int deg = 25;
            for (int j = 0; j < 6; j++) {
                CP.add(new Catapult(mph, deg));
                //System.out.println(mph);
                //System.out.println(deg);
                deg += 5;   
            }
            mph += 5;
        }
        System.out.println(CP.size());
        Catapult data;
        for (int index = 0; index < CP.size(); index++) {
            data = CP.get(index);
            data.convMPHtoMPS();
            data.convDegToRad();
            data.calcDistance();
            data.convMtoFt();
            //System.out.println(data.getMPH());
            //System.out.println(data.getDistance());
        }
        presentData();
    }
    public static void presentData() {
        Catapult data;
        for (int index = 0; index < CP.size(); index++) {
            data = CP.get(index);
            System.out.printf("%1f", data.getMPH());
            for (int j = 0; j < 6; j++) {
                System.out.printf("%4.2f", data.getDistance());
            }
        }
    }

預期產量

MPH    25 deg    30 deg    35 deg    40 deg     45 deg    50 deg
25     distance  distance  distance  distance   distance  distance
30     distance  distance  distance  distance   distance  distance
...

距離是Catapult.java中聲明的公式

R = (Math.pow(MPS, 2)*Math.sin(2*Rad))/Math.pow(9.8)/2));

實際輸出:

MPH    25 deg    30 deg    35 deg    40 deg     45 deg    50 deg
55     20.34     20.34     20.34     20.34      20.34     20.34
55     20.34     20.34     20.34     20.34      20.34     20.34
55     20.34     20.34     20.34     20.34      20.34     20.34
...

謝謝大家的幫助,對於任何語法錯誤或代碼混淆,我深表歉意。 我是Java編程語言的新手!

您不應該在您的情況下使用靜態變量,因為它將在該類的所有對象(彈射器)中通用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM