您好,我目前正在学习Java,但我对其中一个程序的输出感到有些困惑。我遇到的问题是我只需要修改对象一次的修改方法。例如。
Class Car{
//initialize car Object
//constructor etc...
public void accelerate() {
if(engine == false) {
System.out.println("The car is not on!");
return;
}
if ((speed + 5) >= maxSpeed) {
System.out.println("The car can't go any faster!");
speed = maxSpeed;
return;
}
speed = speed + 5;
}
所以这应该使得每当我调用car.accelerate()时,我都会将当前速度加5。但是,当我在main中循环运行它时。
public class Main {
public static void main(String[] args){
for(int i = 0; i < 10; ++i){
Car mercedes = new Mercedes();
mercedes.accelerate();
System.out.println("The Car is going " + mercedes.getSpeed() + "
mph");}
我的输出是汽车以每小时5英里的速度行驶10次。发生了什么事?
答案 0 :(得分:2)
在循环中初始化新对象(新Mercedes())时,每次运行循环时,您都会得到上述输出。
如果您想让值在循环外获取递增的初始化变量
Car mercedes = new Mercedes();
for(int i = 0; i < 10; ++i)
{
mercedes.accelerate();
System.out.println("The Car is going " + mercedes.getSpeed() + "
mph");
}
答案 1 :(得分:1)
在循环中,每次创建汽车的新实例:Car mercedes = new Mercedes();
。因此,每次您以0英里/小时的速度开新车时。
将对象创建移到for循环之前,然后它应该可以正常工作。