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 ,正数。