【问题标题】:JAVA - Execute a conditional if statement for a null value using getters and settersJAVA - 使用 getter 和 setter 对空值执行条件 if 语句
【发布时间】:2020-06-15 20:45:49
【问题描述】:

我在返回值 null 并将其替换为另一个类使用 getter 和 setter 的有意义的值时遇到问题,我想知道我做错了什么。

getter 和 setter 的配置:

public class CarClass {

    private String make;
    private String model;
    private int yearOfMake;

    public void setMake(String make){
        if (make.isEmpty()){
            this.make = "";
            System.out.println("Error please input value");
        } else {
            System.out.println("Hello");
            this.make = make; 
        }
    }

    public String getMake(){
        return make;
    }

    public String getModel() {

        return model;
    }

    public void setModel(String model) {
        if (model.isEmpty()){
            this.model = "";
            System.out.println("Error, you have not entered a valid model");
        } else {
            this.model = model;
        }
    }

    public int getYearOfMake() {
        return yearOfMake;
    }

    public void setYearOfMake(int yearOfMake) {
        if (yearOfMake > 1900)
            this.yearOfMake = yearOfMake;
        else {
            this.yearOfMake = yearOfMake;
            System.out.println("Year of make is invalid");
        }
    }
}

上面的执行脚本:

public class GetterSetter {

    public static void main(String[] args) {
        CarClassTwo bmw = new CarClassTwo();
        bmw.setMake();
        System.out.println(bmw.getMake());
        CarClass benz = new CarClass();
        benz.setModel("C300");
        System.out.println(benz.getModel());
        benz.setYearOfMake(1999);
        System.out.println(benz.getYearOfMake());
        System.out.println("!!!!!!!!");
        benz.setModel("C300");
        System.out.println(benz.getModel());
        benz.setYearOfMake(1800);
        System.out.println(benz.getYearOfMake());
        System.out.println(bmw.getMake());
        System.out.println(bmw.getModel());
    }
}

如果能帮助我理解我做错了什么,我们将不胜感激。

【问题讨论】:

  • 您遇到的具体问题是什么? NullPointerException?
  • 这段代码中没有任何地方检查是否有内容为空。您在几个地方调用isEmpty(),但如果变量为空,则会引发异常。如果你想检查(例如)make 是否为空,你应该写if (make==null)...
  • 但是如果setMake 方法需要一个参数,你也不能在没有参数的情况下调用setMake()。不传递参数与该参数为 null 不同。
  • 啊,我想我明白你说的话了。我想做的是检查默认变量是否为空,只显示一条错误消息“你必须输入一些东西”

标签: java if-statement null this getter-setter


【解决方案1】:

当执行以下代码时:

CarClassTwo bmw = new CarClassTwo();
bmw.setMake();

当时的价值观

private String make;
private String model;

默认初始化为null。

所以当bmw.setMake();被执行时,它会执行if (make.isEmpty()){

类似于 null.isEmpty() --> 会抛出 NullPointerException。

【讨论】:

  • 如果我的默认值为空或在本例中为“null”,我想生成一条错误消息
  • @ras 没有根据您的代码定义任何默认值。如果要分配默认值,请在开始时分配它们。如下所示:``` private String make = "default_make";私有字符串模型=“default_model”;私人 int yearOfMake = "0"; ```
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-24
  • 2023-01-03
  • 1970-01-01
  • 1970-01-01
  • 2016-02-19
  • 1970-01-01
相关资源
最近更新 更多