Java:为什么我不能在类实例中修改变量

时间:2018-10-01 18:53:59

标签: java class

您好,我目前正在学习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次。发生了什么事?

2 个答案:

答案 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循环之前,然后它应该可以正常工作。