骰子等级从3到100

时间:2016-02-11 22:35:50

标签: validation class

假设我有一个名为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_VALUEDice.MAX_VALUE并且不允许用户键入更小或更大的值,或者如果他们这样做会给出错误?

我知道我可以将方法更改为

public void setSides(int a) {

numSides = Math.max(MIN_VALUE, a);
numSides = Math.min(MAX_VALUE, a);

}

并避免错误,但用户永远不会知道

最终我的问题是当我们与那些(意味着哪个类)应该进行数据验证的用户进行交互时?

1 个答案:

答案 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()方法处理数据验证。请记住,作为此类扩展的每个类都将继承该属性。