Java 中的 ArrayList 仅打印列表中的最后一个对象

ArrayList in Java only prints the last object in the List

我正在上学校的在线计算机科学课程,我在路上遇到了一个障碍,两天后我仍然想不通,我转向了社区。

我写了一段代码,我需要打印弹射器的距离。我已将这些对象放入 ArrayList 中,并为弹射器实例开发了一个 class 文件。我希望我的代码在行的开头打印距离列表和 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 编程语言的新手!

你不应该在你的案例中使用静态变量,因为它对于 class (Catapult)

的所有对象都是通用的