假设我有一个名为Dice的类,用java编写
//instance variables
private int numSides;
//Class variables
public final int MIN_VALUE = 3;
public final int MAX_VALUE = 100;
//construct die
public Dice(int sides){
setSides(a);
}
//set sides
public void setSides(int a){
numSides = a;
}
现在假设我有一个主要的,我创建了一个模具
Dice a = new Dice(200);
这是我的问题
应该方法setSides
检查边界和System.out.println("too large")/"too small"
要么
我应该将方法更改为String进行相同的测试并返回null或"太大" /"太小"
或者我应该让用户在主服务器中调用Dice.MIN_VALUE
和Dice.MAX_VALUE
并且不允许用户键入更小或更大的值,或者如果他们这样做会给出错误?
我知道我可以将方法更改为
public void setSides(int a) {
numSides = Math.max(MIN_VALUE, a);
numSides = Math.min(MAX_VALUE, a);
}
并避免错误,但用户永远不会知道
最终我的问题是当我们与那些(意味着哪个类)应该进行数据验证的用户进行交互时?
答案 0 :(得分:0)
您应该让setSides()方法检查错误。
像
这样的东西public Dice(int size)
{
numSides = setSides(size)
}
public void setSides(int a){
int sizeReturned = 0;
if (a <= MAX_VALUE && a >= MIN_VALUE)
sizeReturned = a;
else if (a > MAX_VALUE){
// print error message
sizeReturned = MAX_VALUE;}
else if (a < MIN_VALUE){
// print error message
sizeReturned = MIN_VALUE;}
else{//something weird has happened.
}
return sizeReturned;
}
您可以打印错误消息,让用户知道他们已经超出范围。在这里,我编程说如果它们超出范围,它将自动将上限或下限作为值。
在此示例中,dice类可以通过setSides()方法处理数据验证。请记住,作为此类扩展的每个类都将继承该属性。