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

时间:2015-08-05 00:31:12

标签: java eclipse arraylist computer-science

我正在上学的在线计算机科学课程,我在路上遇到了一个障碍,经过两天我仍然无法弄清楚,我已经转向社区了。

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

1 个答案:

答案 0 :(得分:3)

你不应该在你的情况下使用静态变量,因为它在类的所有对象中都是常见的(Catapult)