边界,测试很重要

int cur = 1000;
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()) {
            int next = scanner.nextInt();
            if (next > 0 && next + cur < 2000) {
                System.out.println("ok,you can!");
                System.out.println(next +cur);
            } else {
                System.out.println("no you can not !");
            }
        }

上面的代码逻辑很简单,判断是否小于2000。输出相应的信息。

但是其中隐藏了一个边界的问题。

当输入800 的时候毫无问题,但是当输入2147483647 时,oh,居然通过了,细细一看,这个值是 int 最大值。数字越界导致校验失效。

ok,you can!
     -2147482649

所以,在测试的时候要正确测试数值的边界: 负数,0 ,正数。

原文地址:https://www.cnblogs.com/pan2011/p/3649364.html