java边界陷阱

某商家生成的电子产品很畅销,需要提前30天预订才能抢到手,同时还规定了一个会员可拥有的最多产品数量,目的是防止囤积的货物被肆意加价,于是后台的代码如下

public class Client{

public final static int LIMIT = 2000;

puiblic static void main(String[] args){

  int cur =1000;

  Scanner input = new Scanner(System.in);

  while(input.hasNextInt()){

    int order = input.nextInt();

   if(order>0 && order+cur<=LIMIT){

    System.out.println("你已经成功预订了"+order+"个产品");

  }else{

  System.out.println("超过极限,预订失败");

}

 

  }

 

}

 

}

这段代码很简单,我们来测试一下:

输入800,结果如下

你已经成功预订了800个产品

这里是没问题,再测一次:

2147483647

结果如下

你已经成功预订了2147483647个产品

看到没,这个数字远远超过了2000的极限,但是还是成功了,一句话可归结其原因,数字边界检验条件失效

 

posted @ 2016-01-09 11:31  evall  阅读(465)  评论(0)    收藏  举报