首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Setter和Getter

Setter和Getter
EN

Stack Overflow用户
提问于 2020-09-08 12:04:05
回答 2查看 73关注 0票数 0

所以我试着做一个类似于uber的乘车系统。所以我正在试着制定一些关于汽车注册号的规则。

代码语言:javascript
复制
public void setRegNo(String regNo) {
        if (regNo.length() == 6) {
            if (regNo.substring(0, 3).matches("[a-zA-Z]+")) {
                if (regNo.substring(3).matches("[0-9]+")) {
                    this.regNo = regNo;
                } else {
                    this.regNo = "Error! The Registration number ends with 3 numerical characters.";
                }
            } else {
                this.regNo = "Error! The registration number begins with 3 alphabetical characters.";
            }
        } else {
            this.regNo = "Error! The Registration number must be 6 characters long.";
        }
    }

根据此setter方法,注册号的长度必须至少为6个字符,前三个字符必须是字母,最后三个字符必须是整数。然后,我创建了一个getter方法,最后将这个注册号传递给了car类的构造函数。但令人惊讶的是,当我试图打印注册号时,它并不遵守这些规则。我已经添加了我正在获得的结果的图片。enter image description here

因此,如果有人知道为什么会发生这种情况,请告诉我。

EN

回答 2

Stack Overflow用户

发布于 2020-09-08 13:24:22

您需要从构造函数参数regNo中删除,并使用setter设置此参数。如下所示:

代码语言:javascript
复制
Car car = new Car("cat", "dog", "pranav Khurana", 4);
car.setRegNo("abc3");

另一种方式--你可以在构造函数中使用setter,例如:

代码语言:javascript
复制
public Car(String regNo, String name) {
    this.setRegNo(regNo);
    this.name = name;
}
票数 0
EN

Stack Overflow用户

发布于 2020-09-08 13:36:37

问题是您没有使用已经实现的setter方法来设置您的汽车的regNo。您应该在构造函数方法中使用该setter方法来重用您编写的代码。另一件事是,您应该使用正则表达式来检查它是否是您想要的形式。禁止正则表达式检查前三个字符是否是“单词字符”,接下来三个字符是数字:

代码语言:javascript
复制
public void setRegNo(String regNo) {
    String myRegex="\\w\\w\\w\\d\\d\\d";
    if (regNo.matches(myRegex))
        this.regNo=regNo;
    else
        System.err.println("This is not a  registration number!!!")
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63786940

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档