黑马程序员技术交流社区

标题: 什么情况下用flag,什么情况下不用 [打印本页]

作者: 天赐潇潇    时间: 2016-3-7 01:33
标题: 什么情况下用flag,什么情况下不用
用来帮助程序做复杂条件的判断条件。如果出现多层循环,根据业务逻辑不可顺序执行,可使用flag设立旗标来改变执行语句。
注意跳转标识,如 break,continue,return。
这个是我自己总结的,但在实际使用中,明明同样的条件,就是问法不一样,一个需要使用,一个不需要,为什么?什么情况下用flag,什么情况下不用?
作者: 天赐潇潇    时间: 2016-3-7 01:35
本帖最后由 天赐潇潇 于 2016-3-7 01:38 编辑
  1. // 买方法 : 1.显示报价单2. 显示打折金额 3.选择水果(输入0 结束选择)id4 获取数量 5计算金额
  2.         public static void buy() {
  3.                 // 1.显示报价单
  4.                 showFruitList();
  5.                 // 2.显示打折信息
  6.                 System.out.println(
  7.                                 "\n\t\t好消息!年底大促销:\n\n\t满300,打九五折!\n\t满600,打九折!!\n\t满1000,打八折!!!\n\t满1000且榴莲超过10个,立减50元!!!!!\n");
  8.                 // 3.用户选择水果,用户输入水果ID,遍历集合进行对比,有的话就可以选择数量,没有的话提示用户输入错误,重新输入
  9.                 while (true) {
  10.                         System.out.println("\n请输入要买的水果ID,如果输入\"0\"代表退出");
  11.                         int chooseID = enterNumber();
  12.                         // 如果输入0,代表结束购买,结束购买就是结束购买这个方法
  13.                         if (chooseID == 0) {
  14.                                 return;// 结束购买方法
  15.                         }
  16.                         boolean flag = false;
  17.                         for (int i = 0; i < list.size(); i++) {
  18.                                 FruitItem thisItem = list.get(i);
  19.                                 if (chooseID == thisItem.ID) {
  20.                                         System.out.println("\n请输入购买数量:");
  21.                                         thisItem.number = enterNumber();
  22.                                         thisItem.money = thisItem.price * thisItem.number;
  23.                                         flag = true;
  24.                                 }
  25.                         }
  26.                         if (!flag) {
  27.                                 System.out.println("您输入的ID有误,请重新输入!\n");
  28.                                 flag = false;
  29.                         }
  30.                 }
  31.         }
复制代码



作者: 天赐潇潇    时间: 2016-3-7 01:38
2楼是用了的
作者: 天赐潇潇    时间: 2016-3-7 01:39
楼下是没有用flag的
作者: 天赐潇潇    时间: 2016-3-7 01:40
  1. // 添加水果项,要在确认之后在创建对象
  2.         public static void addFruitItem() {
  3.                 ForEstimate: while (true) {
  4.                         // 首先设置一个变量来接收输入的编号,判断一下编号是否已经存在
  5.                         System.out.println("请输入水果编号:");
  6.                         int ID = enterNumber();
  7.                         // 如果已经存在,输入错误,请重新输入
  8.                         for (int i = 0; i < list.size(); i++) {
  9.                                 FruitItem thisItem = list.get(i);
  10.                                 if (thisItem.ID == ID) {
  11.                                         System.out.println("您输入的编号已存在,请重新输入!");
  12.                                         continue ForEstimate;
  13.                                 }
  14.                         }
  15.                         FruitItem newItem = new FruitItem();
  16.                         newItem.ID = ID;
  17.                         System.out.println("请输入水果名称:");
  18.                         newItem.name = enterString();
  19.                         System.out.println("请输入水果单价:");
  20.                         newItem.price = enterDouble();
  21.                         System.out.println("请输入计价单位:");
  22.                         newItem.unit = enterString();
  23.                         list.add(newItem);
  24.                         System.out.println("结束添加输入\"0\",输入\"1\"继续添加:");
  25.                         switch (enterNumber()) {
  26.                         case 0:
  27.                                 return;
  28.                         default:
  29.                         }
  30.                 }
复制代码

作者: 天赐潇潇    时间: 2016-3-8 01:56
额  竟然没人  




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2