java循环结构-6

简介: 问题:循环录入学生Java课程的成绩,统计分数大于等于80分的学生的比例。

问题:循环录入学生Java课程的成绩,统计分数大于等于80分的学生的比例。


分析:使用循环语句录入学生成绩并累计人数,这对我们来说并不是难题,但是如果仅累计满足分数大于等于80分的人数,该怎么办呢?这时可以使用continue语句控制累计操作是否进行,如示例7所示。


示例7


package cn.jbit.loops1;
import java.util.Scanner;
public class ContinueDemo {
    /**
     * 统计80分以上学生比例
     */
    public static void main(String[] args) {
        int score;        // 成绩
        int total;        // 班级总人数
        int num = 0;   // 成绩大于或等于80分的人数
        Scanner input = new Scanner(System.in);
        System.out.print("输入班级总人数: ");
        total = input.nextInt();   // 输入班级总数
        for (int i = 0; i < total; i++) {
            System.out.print("请输入第" + (i + 1) + "位学生的成绩: ");
            score = input.nextInt();
            if (score < 80) {
                continue;
            }
            num++;
        }
        System.out.println("80分以上的学生人数是: " + num);
        double rate = (double) num / total * 100;
        System.out.println("80分以上的学生所占的比例为:" + rate + "%");
    }
}


程序运行结果如图6.7所示。


图6.7示例7的运行结果


分析程序,变量total保存班级总人数,变量num保存80分以上的学生人数,i从0开始循环一直到total-1。如果录入的分数大于等于80,则num自加1,然后结束本次循环,进入下一次循环;如果录入的分数小于80,则执行continue,然后结束本次循环,进入下一次循环。现在回想一下刚才学过的break语句,是不是能够理解它们之间的区别了?如果体会得还不是很深刻,就赶紧动手写一写下面这个程序吧!


问题:求1~100之间个位数字不是2、3、4、7,并且不能被3整除的整数之和。


分析:仔细分析,会发现这个问题仍然是对某些满足条件的值求和,只不过这次的条件复杂了。如果这个值的个位是2、3、4、7或者能被3整除,则使用continue语句结束此次循环,进行下一次循环。


示例8


package cn.jbit.loops1;
public class ContinueDemo2 {
    public static void main(String[] args) {
        int sum = 0;  //定义变量保存累加值
        for (int i = 1; i <=100; i++) {
            //判断i是否满足条件
            if ( i % 10 == 2 || i % 10 == 3 || i % 10 == 4 ||  i % 10 == 7 || i % 3 == 0) {
                continue;
            }
                sum = sum + i; //进行累加
        }
        System.out.println("1~100 之间个位数不是2、3、4、7," + "并且不能被3整除的整数和是:" + sum);
    }
}


在示例8中,使用if语句进行条件判断。如果i对10取余等于2,或者i对10取余等于3,或者i对10取余等于4,或者i对10取余等于7,或者i对3取余等于0,则说明i不是所需要的数,不进行累加,而进入下一次的循环。


小结:continue语句可以用于for循环结构,也可以用于while和do-while循环结构。在for循环结构中,continue语句使程序先跳转到迭代部分,然后判断循环条件。如果为true,则继续下一次循环;否则终止循环。在while循环结构中,continue语句执行完毕后,程序将直接判断循环条件。continue语句只能用在循环结构中。


学习了 break和continue语句,可知这两个语句都能改变循环操作,但它们之间有什么区别呢?


对比:


在循环结构中:


break语句用于终止某个循环,程序跳转到循环体外的下一条语句。

continue语句用于跳出本次循环,进入下一次循环的语句。

6.2.3 技能训练

前面已经学习了 Java语言中的三种循环,也知道了 break语句和continue语句的使用方法,下面通过上机练习来巩固知识。


上机练习3


指导——循环录入会员信息


训练要点


for循环结构。

continue 语句。

需求说明


商场为了维护会员信息,需要将其信息录入系统中,具体要求如下。

♦ 循环录入三位会员的信息(会员号、会员生曰、积分)。


♦ 判断会员号是否合法(四位整数)。


♦ 若会员号合法,则显示录入的信息,否则显示录入失败。


♦ 程序运行结果如图6.8所示。


图6.8上机练习3的运行结果


实现思路及关键代码


(1) 定义三个变量,分别记录会员号、会员生曰和会员积分。


(2) 利用循环录入三位会员的信息。


(3) 如果会员号无效,利用continue实现程序跳转。


参考解决方案

package cn.jbit.loops1;
import java.util.Scanner;
public class AddCustomer {
    /*
     * 循环录入会员信息
     */
    public static void main(String[] args) {
        System.out.println("MyShopping管理系统 > 客户信息管理 > 添加客户信息\n");
        int custNo = 0;        //会员号
        String birthday;   //会员生日
        int points = 0;       //会员积分
        Scanner input = new Scanner(System.in);
        for(int i = 0; i < 3; i++){       //循环录入会员信息
            System.out.print("请输入会员号(<4位整数>):");
            custNo = input.nextInt();
            System.out.print("请输入会员生日(月/日<用两位整数表示>):");
            birthday = input.next();
            System.out.print("请输入会员积分:");
            points = input.nextInt();
            if(custNo < 1000 || custNo > 9999){    //会员号无效则跳出
                System.out.println("客户号" +custNo+ "是无效会员号!");
                System.out.println("录入信息失败\n");
                continue;
            }
            System.out.println("您录入的会员信息是:");
            System.out.println(custNo+ " " +birthday+ " " +points+ "\n");
        }
        System.out.println("程序结束!");
    }
}

上机练习4


练习——验证用户登录信息


需求说明


 


用户登录系统时需要输入用户名和密码,系统对用户输入的用户名和密码进行验证。验证次数最多三次,超过三次则程序结束。根据验证结果的不同(信息匹配/信息不匹配/三次都不匹配),执行不同的操作。假设正确的用户名和密码分别为jim和123456,三种情况的运行结果分别如图6.9-图6.11所示。


图 6.9 信息匹配运行结果        图 6.10 信息不匹配运行结果     图 6.11 3次信息不匹配运行结果


提示:


定义三个变量,分别保存用户名、密码和用户输入的次数。

利用循环结构输入用户名和密码,利用continue语句和break语句控制程序流程。

代码展示:


package cn.jbit.loops1;
import java.util.Scanner;
public class LoginCheck {
    /**
     * 验证用户名和密码(根据匹配情况执行不同操作)
     */
    public static void main(String[] args) {
        int i = 0;
        String userName;
        String password;
        Scanner input = new Scanner(System.in);
        for(i = 0; i < 3; i++){
            System.out.print("请输入用户名:");
            userName = input.next();
            System.out.print("请输入密码:");
            password = input.next();
            if("jim".equals(userName) && "123456".equals(password)){   //匹配
                System.out.println("欢迎登录MyShopping系统!");
                break;
            }else{ //不匹配
                System.out.println("输入错误!您还有" +(2-i)+ "次机会!\n");
                continue;
            }
        }
        if(i == 3){    //3次都不匹配
            System.out.println("对不起,您3次均输入错误!");
        }
    }
}


6.3 循环结构总结

到目前为止,我们已经学习了 Java提供的三种最主要的循环结构,它们是while、do-while和for循环结构。无论哪一种循环结构,都有四个必不可少的部分:初始部分、循环条件、循环体、迭代部分,缺少了任何一个都可能造成严重的错误。下面从三个方面对这三种循环结构进行比较。


语法不同。

while循环语句如下。

while  (<条件〉){
//循环体
}
do-while循环语句如下。
do {
//循环体
} while (< 条件〉);
for循环语句如下。
for(初始化;条件;迭代){
//循环体
}


执行顺序不同。

♦  while循环结构:先进行条件判断,再执行循环体。如果条件不成立,退出循环。


♦  do-while循环结构:先执行循环体,再进行条件判断,循环体至少执行一次。


♦  for循环结构:先执行初始化部分,再进行条件判断,然后执行循环体,最后进行迭代部分的计算。如果条件不成立,跳出循环。


适用情况不同。

在解决问题时,对于循环次数确定的情况,通常选用for循环结构;对于循环次数不确定的情况,通常选用while和do-while循环结构。


本章总结


for循环结构的语法格式如下。

for  (表达式 1; 表达式 2; 表达式 3) {


//循环体


}


表达式1:循环结构的初始部分,为循环变量赋初值。


表达式2:循环结构的循环条件。


表达式3:循环结构的迭代部分,通常用来修改循环变量的值。


在循环中,可以使用break和continue语句控制程序的流程。

♦ break语句用于终止某个循环,程序跳转到循环体外的下一条语句。


♦ continue语句用于跳出本次循环,进入下一次循环。


相关文章
|
1月前
|
Java
Java 循环结构
4月更文挑战第9天
|
2月前
|
Java
Java循环结构
Java循环结构
18 0
|
7月前
|
Java
Java 循环结构 - for, while 及 do...while
Java 循环结构 - for, while 及 do...while
|
4天前
|
Java 测试技术
Java一分钟之-循环结构:for与while循环
【5月更文挑战第8天】本文探讨了Java中两种主要的循环结构——`for`和`while`循环。`for`循环适用于已知迭代次数的情况,常见问题包括无限循环、初始化错误和作用域混淆。`while`循环适用于循环次数未知但条件明确的情况,需注意更新条件、死循环初始化和逻辑错误。避免错误的策略包括明确循环目的、检查边界条件、管理迭代变量、进行代码审查和测试,以及使用增强型`for`循环。正确理解和使用这些循环能提升代码质量。
11 0
|
13天前
|
Java
JAVA循环结构分析与设计
JAVA循环结构分析与设计
20 1
|
2月前
|
Java
Java循环结构
Java循环结构
13 0
|
2月前
|
Java
JAVA循环结构
JAVA循环结构
14 3
|
6月前
|
Java
Java的流程控制(选择结构语句 if ~ switch &循环结构语句dowhile ~ for)
程序执行的控制流程分为三种,也称为三种结构,分别是:顺序结构、和循环结构。 顺序结构指的是程序执行按照代码的编写顺序,依次从上往下开始执行,直到程序结束。程序的执行默认是顺序执行的
47 1
|
2月前
|
Java
【Java从入门到精通】Java循环结构
【Java从入门到精通】Java循环结构
31 0
|
3月前
|
数据采集 Java 数据库
我想再学一次Java三种循环结构哦---【开发实例】
我想再学一次Java三种循环结构哦---【开发实例】
32 0
我想再学一次Java三种循环结构哦---【开发实例】