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)
的所有对象都是通用的
我正在上学校的在线计算机科学课程,我在路上遇到了一个障碍,两天后我仍然想不通,我转向了社区。
我写了一段代码,我需要打印弹射器的距离。我已将这些对象放入 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)
的所有对象都是通用的