Java int参数不是负面的

时间:2017-12-08 19:51:41

标签: java int negative-zero

我用Java争论一个Java方法,最后一个(int步)不能是0或负数。目前我有这样的话:

public static int[] createMonotoneIncreasingArray(int start, int end, int step) {
    if (step <= 0) throw new IllegalArgumentException("Step cannot be lower than 1 in a monotone increasing array");

    int[] resultArray = new int[(end - start) / step];

    for (int i = 0; i < resultArray.length; i++) resultArray[i] = i * step + start;

    return resultArray;
}

有没有更优雅的方法来拒绝方法中的非正int并避免异常?

1 个答案:

答案 0 :(得分:1)

是的,有办法。您可以传入一个类的实例,而不是传入一个int。在这种情况下,您可以创建一个名为Step的类。您仍然需要检查步骤构造函数中步骤具有的值的正确性。但是在这样做之后你可以知道如果你有一个Step的实例,它的值大于0;

public class Step {

   private int value;

   public Step(int value) {
      if (value <= 0) throw new IllegalArgumentException("Step cannot be lower than 1");
      this.value = value;
   }

   public int getValue() { return value; }
}


public static int[] createMonotoneIncreasingArray(int start, int end, Step step) {
    int[] resultArray = new int[(end - start) / step.getValue()];
    for (int i = 0; i < resultArray.length; i++) resultArray[i] = i * step.getValue() + start;
    return resultArray;
}

这是限制int值的相当常见的模式。有关此模式的另一个示例Setting a limit to an int value

,请参阅此问题