【问题标题】:Setter is not setting a field of the class [duplicate]Setter没有设置类的字段[重复]
【发布时间】:2020-02-02 21:52:03
【问题描述】:

我已经尝试了几个小时来找出为什么我的代码为每辆“汽车”输出零“年龄”。在我已经编写了两个类似的代码位并且它们运行良好之前......

class Car {
    public int age;
    public int getAge() {
        return age;
    }
    public void setAge (int a) {
        int age = a;
    }
    public void carAge() {
        if (age == 0) {
            System.out.println("Wow! That car's pretty new!");
        } else if (age < 0) {
            System.out.println("Invalid input");
        }
        else if (age <= 3) {
            System.out.println("Superb! That car's quite new!");
        } else if (age <= 7) {
            System.out.println("The car's not old");
        } else if (age <= 10) {
            System.out.println("You've got to be sure it'll work correctly");
        } else if (age <= 15) {
            System.out.println("That car's a little bit old");
        } else if (age <= 30) {
            System.out.println("Does it really work?!");
        } else if (age <= 100) {
            System.out.println("It must be antique otherwise you shouldn't buy it");
        } else {
            System.out.println("Invalid input");
        }
    }
}

public class CarAgeTest {
    public static void main(String[] args) {
        Car lamborgini = new Car();
        lamborgini.setAge (1);
        Car ferrari = new Car();
        ferrari.setAge (2);
        Car uazpatriot = new Car();
        uazpatriot.setAge (15);
        Car fordm1 = new Car();
        fordm1.setAge (95);
        System.out.println("Lamborgini is " + lamborgini.getAge() + " years old");
        lamborgini.carAge();
        System.out.println("Ferrari is " + ferrari.getAge() + " years old");
        ferrari.carAge();
        System.out.println("UAZ Patriot is " + uazpatriot.getAge() + " years old");
        uazpatriot.carAge();
        System.out.println("Ford model 1 is " + fordm1.getAge() + " years old");
        fordm1.carAge();
    }
}

请帮帮我... 可能它应该在帖子中提供更多细节,但我不知道该放什么更多细节

【问题讨论】:

  • 您没有设置年龄字段。相反,您设置了一个阴影变量。
  • public void setAge (int a) { int age = a; } 更改为public void setAge (int a) { this.age = a; },以便您现在设置真实年龄字段。你甚至不需要 this. 部分,但我把它放进去是希望使更改更清晰,更难搞砸。
  • 这不是 JavaScript。

标签: java


【解决方案1】:

这是 Java 而不是 JavaScript。问题是,在 setAge 方法中,您将值分配给一个新的(!)年龄变量,而不是类属性“age”。就是这样

【讨论】:

    猜你喜欢
    • 2020-01-01
    • 2021-09-22
    • 1970-01-01
    • 2018-07-22
    • 1970-01-01
    • 1970-01-01
    • 2011-12-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多