昆明java培训
达内昆明广州春城路

18487146383

热门课程

java程序:边界还是边界

  • 时间:2016-09-30
  • 发布:昆明Java培训
  • 来源:达内新闻

昆明达内Java培训的老师发现,某商家生产的电子产品非常畅销,需要提前30天预订才能抢到手,同时还规定了一个会员可拥有的最多产品数量,目的是为了防止囤积压货肆意加价。会员的预订过程是这样的:先登录官方网站,选择产品型号,然后设置需要预订的数量,提交,符合规则即提示下单成功,不符合规则提示下单失败,后台的处理模拟如下:

1 import java.util.Scanner;

2

3 public class Client24 {

4    //一个会员拥有产品的最多数量

5    public final static int LIMIT = 2000;

6

7    public static void main(String[] args) {

8        //会员当前用有的产品数量

9        int cur = 1000;

10        Scanner input = new Scanner(System.in);

11        System.out.println("请输入需要预定的数量:");

12        while (input.hasNextInt()) {

13            int order = input.nextInt();

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

15                System.out.println("你已经成功预定:" + order + "个产品");

16            } else {

17                System.out.println("超过限额,预定失败!");

18            }

19        }

20

21    }

22 }

这是一个简单的订单处理程序,其中cur代表的是会员当前拥有的产品数量,LIMIT是一个会员最多拥有的产品数量(现实中,这两个参数当然是从数据库中获得的,不过这里是一个模拟程序),如果当前预订数量与拥有数量之和超过了最大数量,则预订失败,否则下单成功。业务逻辑很简单,同时在web界面上对订单数量做了严格的校验,比如不能是负值、不能超过最大数量等,但是人算不如天算,运行不到两小时数据库中就出现了异常数据:某会员拥有的产品数量与预定数量之和远远大于限额。怎么会这样呢?程序逻辑上不可能有问题呀,这如何产生的呢?我们来模拟一下,第一次输入:

请输入需要预定的数量:800   你已经成功预定800个产品

这完全满足条件,没有任何问题,继续输入:

请输入需要预定的数量:2147483647  你已经成功预定2147483647个产品

看到没有,这个数字已经远远超过了2000的限额,但是竟然预定成功了,真实神奇!

了解详情请登陆昆明达内Java培训官网(km.Java.tedu.cn)!

上一篇:不要让类型默默转换
下一篇:不要让四舍五入亏了一方

达内培训小米MIX 2尊享版工艺精湛

程序猿教你java的创建和销毁对象

昆明java培训-程序猿带你入门到精通

昆明达内-有趣的轻量级图像浏览器

选择城市和中心
贵州省

广西省

海南省