守卫先于业务、数据驱动、单一事实来源、do-until 模式、守门员+业务

```has 家族和 next 家族是一一对应的侦察兵/工兵关系:

工兵(直接取) 侦察兵(先探再取) nextInt() ←→ hasNextInt() nextDouble() ←→ hasNextDouble() nextLong() ←→ hasNextLong() nextBoolean() ←→ hasNextBoolean() nextLine() ←→ hasNextLine() next() ←→ hasNext()

text
复制代码
/** * ①猜数字游戏(答案先写死42)②输入校验循环:面积必须>0且<1000,不合法就一直重输 * <p> * 注意: * 1、常量 * 2、边界判断 * 3、退出机制 * */ import java.util.Scanner; public class Day12NumberGuessGame { public static final int NUMBER_ANSWER = 42; // 设置猜数字游戏的答案 public static final double MIN_AREA = 0d; // 设置猜面积的下限 public static final double MAX_AREA = 1000d; // 设置猜面积的上限 public static final double DEFAULT_UNIT_PRICE = 1200; // 设置默认的装修单价 public static void main(String[] args) { Scanner in = new Scanner(System.in); // ①猜数字游戏(答案先写死42) System.out.println("----------现在开始猜数字游戏----------"); do { System.out.print("请输入数字【0-退出游戏】:"); int num = in.nextInt(); if (num != 0) { if (num == NUMBER_ANSWER) { System.out.print(("Bingo!恭喜您猜对了!【1-再玩一次 | 其他退出】:")); int numAgain = in.nextInt(); if (numAgain != 1) { break; } } else { if (num < NUMBER_ANSWER) { System.out.println("不好意思呀,您猜的数字小了……"); continue; } if (num > NUMBER_ANSWER) { System.out.println("不好意思呀,您猜的数字大了……"); } } } else { break; } } while (true); // ②输入校验循环:面积必须>0且<1000,不合法就一直重输 System.out.println("----------现在开始猜面积游戏----------"); do { System.out.print("请输入有效的面积【0-退出游戏】:"); double areaNum = in.nextDouble(); if (areaNum != 0) { if (areaNum > MIN_AREA && areaNum < MAX_AREA) { System.out.printf("面积合法!按 %,.2f 元/㎡ 预估,装修总价:%,.2f 元%n", DEFAULT_UNIT_PRICE, areaNum * DEFAULT_UNIT_PRICE); break; } else { System.out.println("不好意思哦,您输入的面积是无效的……"); } } else { break; } } while (true); } }
0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
下载 APP