gpt4 book ai didi

java - 我可以让构造函数返回由于验证原因而尚未初始化的值吗?

转载 作者:行者123 更新时间:2023-12-01 19:34:03 24 4
gpt4 key购买 nike

我有一个构造函数接收3个参数String name、int id、int height。

我正在使用 setter 来检查验证:例如,高度应该在 100 厘米到 250 厘米之间,因此我避免了冗余,而不是在构造函数内部进行检查,但我需要在驱动程序类中使用 while 循环来保持一次又一次询问高度,直到用户输入有效数据..

问题是:我如何指定问题出在高度而不是名称..

setHeight(int height){
if(height>=100 && height<=250){
this.height=height;
}
}

构造函数将调用此方法来设置高度并检查验证,但如果它无效,我需要构造函数向用户返回一些内容以指定应用程序接受名称但高度存在问题。

我应该为每个参数使用静态 boolean 变量来查看哪个参数无效,还是存在更简单的方法?

最佳答案

您可以为每个异常定义特定的异常并相应地抛出它们。

public class Test {

int id;
int height;
String name;

public Test(int id, int height, String name) throws HeightException, NameException, IdException {
setHeight(height);
setId(id);
setName(name);
}

public static void main(String[] args) {
try {
Test tes = new Test(1, 2, "Hello")
} catch (HeightException e) {
//height is wrong
e.printStackTrace();
} catch (NameException e) {
//name is wrong
e.printStackTrace();
} catch (IdException e) {
//id is wrong
e.printStackTrace();
}
}

public void setId(int id) throws IdException {
if (id >= 200)
throw new IdException("Id is wrong it must be lower than 200");
this.id = id;

}

public void setHeight(int height) throws HeightException {
if (height >= 100 && height <= 250) {
this.height = height;
} else
throw new HeightException("Height is wrong it must be between 100 and 250");
}

public void setName(String name) throws NameException {
if (name.length() >= 20)
throw new NameException("Name is wrong it must be less than 20 characters");
this.name = name;
}

class NameException extends Exception {
NameException(String message) {
super(message);
}
}

class HeightException extends Exception {
HeightException(String message) {
super(message);
}
}

class IdException extends Exception {
IdException(String message) {
super(message);
}
}
}

关于java - 我可以让构造函数返回由于验证原因而尚未初始化的值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58476950/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com