3.2 循环语句及其跳转语句控制和debug环节

循环语句有哪些

在这里插入图片描述
while循环举例:
在这里插入图片描述

【练一练】使用 while 循环实现程序主界面菜单

import java.util.Scanner;

class TestWhile2 {
    public static void main(String[] args) {
        int userSel = -1;                //用户选择输入的参数
        //使用while(true),在单个模块功能执行结束后,重新输出主界面,继续循环
        while (true) {
            System.out.println("1. 输入数据");
            System.out.println("2. 输出数据");
            System.out.println("3. 退出程序");
            System.out.print("请选择你的输入(只能输入1、2、3):");
            Scanner input = new Scanner(System.in);
            userSel = input.nextInt();    //从控制台获取用户输入的选择

            //当用户输入3时,退出while循环,结束程序
            if (userSel == 3){
                System.out.println("结束程序!");
                break;//break的作用是跳出while循环以结束程序运行
            }

            switch (userSel) {
                case 1:
                    System.out.println("执行1.输入数据模块");
                    System.out.println("******************");
                    System.out.println("******************");
                    break;
                case 2:
                    System.out.println("执行2.输出数据模块");
                    System.out.println("******************");
                    System.out.println("******************");
                    break;
                case 3:
                    System.out.println("结束程序!");
                    break;
                default:
                    System.out.println("输入数据不正确!");
                    break;
            }

        }
    }
}

编译、运行此程序,程序的结果如下:
在这里插入图片描述

do…while循环

do…while 循环的语法形式如下。

do{
  循环代码块
}while(循环条件)

do…while 循环和 while 循环类似,不同点在于 do…while 循环以 do 开头,先执行循环代码块,然后再判断循环条件,如果循环条件满足,则继续循环。

由此可见,do…while 循环中的循环代码块至少会被执行一次

【练一练】输入正确的密码才能继续的程序

需求:让用户输入正确的程序密码之后,才可以执行下面的代码,否则继续让用户输入,直到输入正确为止。

import java.util.Scanner;

class TestWhile3 {
    public static void main(String[] args) {
        //使用字符串String存储密码,后面课程会详细介绍String类
        String userPass = "";          //用户输入的密码
        String PASSWORD = "123456";    //正确密码为123456
        Scanner input = new Scanner(System.in);
        do {
            System.out.print("请输入程序密码:");
            userPass = input.nextLine();        //从控制台获取用户输入的密码
            System.out.println();
        //字符串的equals()方法用于判断两个字符串的值是否相同
        } while (!userPass.equals(PASSWORD));    //密码输入不正确,继续循环,重新输入
        System.out.println("程序密码正确,继续执行!");
    }
}

for循环

for 循环的重点在于其 3 个表达式,其中:

表达式 1 通常是赋值语句,一般是循环语句的初始部分,为循环参数赋初值,表达式 1 可以省略。
表达式 2 通常是条件语句,即循环条件,当该条件满足时,进入循环,不满足则跳出循环。表达式 2 也可以省略,但省略后就没有了循环判断条件,也就形成了死循环。
表达式 3 通常也是赋值语句,属于循环结构的迭代部分,当一次循环代码块执行完毕以后,程序执行表达式 3,然后再去判断表达式 2 的循环条件是否满足。表达式 3 通常用来更改循环参数的值。表达式 3 也可以省略,如果省略,通常需要在循环代码块中添加修改循环参数的语句。
综上所述,可以发现 for 循环的执行顺序如图所示
在这里插入图片描述

跳转语句

在介绍 switch 语句的时候,首次接触了 break 语句,其作用是跳出 switch 代码块,执行 switch 语句后面的代码。在介绍双重 for 循环时,用到了 continue 语句,continue 语句的主要作用为跳出当次循环,继续执行下一次循环。其中 break、continue 以及后面要学的 return 语句,都是让程序从一部分跳转到另一部分,习惯上都称为跳转语句

在循环体内,break 语句和 continue 语句的区别在于:使用 break 语句是跳出循环进而执行循环之后的语句(即结束当前的循环代码),而 continue 语句是跳过本次循环继续执行下一次循环(即跳过本次循环)。在企业面试的时候,这个问题经常被问到,务必掌握。

例:
continue作用
在这里插入图片描述
break作用
在这里插入图片描述

【练一练】使用 for 循环配合跳转语句求质数

业务逻辑分析和上次实验一样,本次我们重点解决的是当发现内层循环中存在某个 j 能将 i 整除的时候,应该直接跳过此次 i 的判断,直接让外层循环进入下一次循环。注意此处comtinue outer的作用!!!

class TestFor5 {
    //输出1~100之间的质数
    public static void main(String[] args) {
        int i, j;                        //声明循环参数
        outer://此处outer的作用是给外层循环起个名字,方便配合跳转语句
        for (i = 2; i < 100; i++) {            //从2开始,逐个递增进行判断
        //Math.sqrt(i)方法是求i的平方根
            for (j = 2; j <= Math.sqrt(i); j++) {    //从2开始,逐个递增到外循环的平方根
                if (i % j == 0){//外循环数除以内循环数,余0则非质数,跳出内循环
                  continue outer;//跳出内循环,跳到outer标识的位置继续循环
                }

            }
            System.out.print(i+" ");            //否则显示质数
        }
    }
}

程序的运行结果没有问题,注意此处 continue outer; 的作用,是跳到 outer 标识的位置继续循环,比如 i 的值为 98,j 的值为 2 的时候 i%j 的值为 0,已经可以断定 i 不是质数了,无需将 i 与 2 之后的数字取余,让外层的 i 进入下一次循环( i = 99 )即可。

在某些需求下我们会使用 break 来实现,注意 break 是跳出整个循环,而 continue 是跳出单次循环。

debug环节

debug是用与查看程序运行环节
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值