4.3、 do-while循环结构
案例8:制作游戏菜单如下:1、新的征程 2、再续前缘 3、游戏设置 4、卸甲归田,用户输入菜单的编号,根据输入的编号,提示进入了哪一个选项?代码如下:
public class Demo8 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); boolean flag = true; do { System.out.println("\n--------热血传奇--------\n"); System.out.println("1.新的征程"); System.out.println("2.再续前缘"); System.out.println("3.游戏设置"); System.out.println("4.卸甲归田"); System.out.println("请输入您的选择:"); String choose = scanner.next(); switch (choose) { case "1": System.out.println("您选择了新的征程!"); break; case "2": System.out.println("您选择了再续前缘!"); break; case "3": System.out.println("您选择了游戏设置!"); break; case "4": System.out.println("\n----BYE-BYE----\n"); flag = false; break; default: System.out.println("输入错误,请重新输入!"); break; } } while (flag); } } |
do-while循环的格式:
do { 循环体; }while(条件表达式); |
for、while、do-while区别:【面试点】
for:一般使用在已知循环次数的情况下。
while:一般使用在不确定循环次数的情况下,例如:死循环情况下,先判断循环条件是否成立,再执行循环体,有可能循环一次都没有运行。
do-while:一般使用在不确定循环次数的情况下,例如:死循环情况下,先执行循环体,再判断循环条件是否成立,至少循环一次。
4.4、循环嵌套【重点】【难点】
案例9:判断3-100之间的素数,素数是一个只能被1和本身整除的数?代码如下:
public class Demo9 { public static void main(String[] args) { for (int i = 3; i < 100; i++) { int j = 2; for (; j < i; j++) { if (i % j == 0) break; } if (j == i) System.out.println(i + "是素数!"); else System.out.println(i + "不是素数!"); } } } |
案例10:升级游戏菜单,如果用户选择了新的征程,提示用户选择角色是法师还是战士;如果用户选择了再续前缘,提示用户选择进度一~三;如果用户选择了游戏设置,提示用户选择是显示设置还是音声设置;其他不变,代码如下:
public class Demo10 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); boolean flag = true; do { System.out.println("\n--------热血传奇--------\n"); System.out.println("1.新的征程"); System.out.println("2.再续前缘"); System.out.println("3.游戏设置"); System.out.println("4.卸甲归田"); System.out.println("请输入您的选择:"); String choose = scanner.next(); switch (choose) { case "1": boolean subFlag1 = true; do { System.out.println("\n--------角色创建--------\n"); System.out.println("1.战士"); System.out.println("2.法师"); System.out.println("3.返回上一级菜单"); System.out.println("请输入您的选择:"); choose = scanner.next(); switch (choose) { case "1": System.out.println("您选择了战士!"); break; case "2": System.out.println("您选择了法师!"); break; case "3": subFlag1 = false; break; default: System.out.println("输入错误,请重新输入!"); break; } } while (subFlag1); break; case "2": boolean subFlag2 = true; do { System.out.println("\n--------读取进度--------\n"); System.out.println("1.进度一"); System.out.println("2.进度二"); System.out.println("3.返回上一级菜单"); System.out.println("请输入您的选择:"); choose = scanner.next(); switch (choose) { case "1": System.out.println("您选择了进度一!"); break; case "2": System.out.println("您选择了进度二!"); break; case "3": subFlag2 = false; break; default: System.out.println("输入错误,请重新输入!"); break; } } while (subFlag2); break; case "3": boolean subFlag3 = true; do { System.out.println("\n--------游戏设置--------\n"); System.out.println("1.显示设置"); System.out.println("2.音声设置"); System.out.println("3.返回上一级菜单"); System.out.println("请输入您的选择:"); choose = scanner.next(); switch (choose) { case "1": System.out.println("您选择了显示设置!"); break; case "2": System.out.println("您选择了音声设置!"); break; case "3": subFlag3 = false; break; default: System.out.println("输入错误,请重新输入!"); break; } } while (subFlag3); break; case "4": System.out.println("\n----BYE-BYE----\n"); flag = false; break; default: System.out.println("输入错误,请重新输入!"); break; } } while (flag); } } |
4.5、小结
for循环一般使用在已知循环次数的场景,有三个表达式,第一个表达式用来定义循环初值,第二个表达式用来判断是否继续循环的条件,第三个表达式用来更新循环变量的值。【重点】
while循环使用在未知循环次数的场景,执行流程是先判断、再循环,有可以不执行循环体。【重点】
do-while循环使用在未知循环次数的场景,执行流程是先循环、再判断,至少要执行一次循环体。