黑马程序员技术交流社区
标题:
什么情况下用flag,什么情况下不用
[打印本页]
作者:
天赐潇潇
时间:
2016-3-7 01:33
标题:
什么情况下用flag,什么情况下不用
用来帮助程序做复杂条件的判断条件。如果出现多层循环,根据业务逻辑不可顺序执行,可使用flag设立旗标来改变执行语句。
注意跳转标识,如 break,continue,return。
这个是我自己总结的,但在实际使用中,明明同样的条件,就是问法不一样,一个需要使用,一个不需要,为什么?什么情况下用flag,什么情况下不用?
作者:
天赐潇潇
时间:
2016-3-7 01:35
本帖最后由 天赐潇潇 于 2016-3-7 01:38 编辑
// 买方法 : 1.显示报价单2. 显示打折金额 3.选择水果(输入0 结束选择)id4 获取数量 5计算金额
public static void buy() {
// 1.显示报价单
showFruitList();
// 2.显示打折信息
System.out.println(
"\n\t\t好消息!年底大促销:\n\n\t满300,打九五折!\n\t满600,打九折!!\n\t满1000,打八折!!!\n\t满1000且榴莲超过10个,立减50元!!!!!\n");
// 3.用户选择水果,用户输入水果ID,遍历集合进行对比,有的话就可以选择数量,没有的话提示用户输入错误,重新输入
while (true) {
System.out.println("\n请输入要买的水果ID,如果输入\"0\"代表退出");
int chooseID = enterNumber();
// 如果输入0,代表结束购买,结束购买就是结束购买这个方法
if (chooseID == 0) {
return;// 结束购买方法
}
boolean flag = false;
for (int i = 0; i < list.size(); i++) {
FruitItem thisItem = list.get(i);
if (chooseID == thisItem.ID) {
System.out.println("\n请输入购买数量:");
thisItem.number = enterNumber();
thisItem.money = thisItem.price * thisItem.number;
flag = true;
}
}
if (!flag) {
System.out.println("您输入的ID有误,请重新输入!\n");
flag = false;
}
}
}
复制代码
作者:
天赐潇潇
时间:
2016-3-7 01:38
2楼是用了的
作者:
天赐潇潇
时间:
2016-3-7 01:39
楼下是没有用flag的
作者:
天赐潇潇
时间:
2016-3-7 01:40
// 添加水果项,要在确认之后在创建对象
public static void addFruitItem() {
ForEstimate: while (true) {
// 首先设置一个变量来接收输入的编号,判断一下编号是否已经存在
System.out.println("请输入水果编号:");
int ID = enterNumber();
// 如果已经存在,输入错误,请重新输入
for (int i = 0; i < list.size(); i++) {
FruitItem thisItem = list.get(i);
if (thisItem.ID == ID) {
System.out.println("您输入的编号已存在,请重新输入!");
continue ForEstimate;
}
}
FruitItem newItem = new FruitItem();
newItem.ID = ID;
System.out.println("请输入水果名称:");
newItem.name = enterString();
System.out.println("请输入水果单价:");
newItem.price = enterDouble();
System.out.println("请输入计价单位:");
newItem.unit = enterString();
list.add(newItem);
System.out.println("结束添加输入\"0\",输入\"1\"继续添加:");
switch (enterNumber()) {
case 0:
return;
default:
}
}
复制代码
作者:
天赐潇潇
时间:
2016-3-8 01:56
额 竟然没人
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2