课程咨询 :186 8716 1620      qq:2066486918

昆明Java培训 > 达内新闻 > java程序:边界还是边界
  • java程序:边界还是边界

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

  • 昆明达内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)!

    推荐文章

上一篇:不要让类型默默转换

下一篇:不要让四舍五入亏了一方

最新开班日期  |  更多

Java--零基础全日制班

Java--零基础全日制班

开班日期:11/30

Java--零基础业余班

Java--零基础业余班

开班日期:11/30

Java--周末提升班

Java--周末提升班

开班日期:11/30

Java--零基础周末班

Java--零基础周末班

开班日期:11/30

  • 网址:http://km .java.tedu.cn      地址:昆明市官渡区春城路62号证券大厦附楼6楼
  • 课程培训电话:186 8716 1620      qq:2066486918    全国服务监督电话:400-827-0010
  • 服务邮箱 ts@tedu.cn
  • 2001-2016 达内国际公司(TARENA INTERNATIONAL,INC.) 版权所有 京ICP证08000853号-56