java循环结构-5

简介: 现在已经完成了 for循环结构的学习,下面通过练习巩固一下学习成果。

6.1.4 技能训练

现在已经完成了 for循环结构的学习,下面通过练习巩固一下学习成果。


上机练习1


练习——计算100以内的奇数之和


需求说明


编程实现:计算100以内的奇数之和,并设置断点调试程序,追踪三个表达式的执行顺序及循环变量的变化。


提示:实现思路如下。


(1) 初始部分:声明整型变量num和sum,分别表示当前加数及当前和。


(2) 循环条件:num <= 100。


(3) 循环操作:累加求和。


参考代码示范


package cn.jbit.loops1;
/*
 * 计算100以内的奇数之和
 */
public class good {
    public static void main(String[] args) {
        int sum = 0; // 定义一个变量,进行累加
        for (int i = 1; i <= 100; i++) {
            if (i % 2 == 0) {
                continue;// 如果i为奇数,结束本次循环,进行下一次循环
            }
            sum = sum + i;
        }
        System.out.print("1--100之间的偶数和是:" + sum);
    }
}

上机练习2


指导——统计顾客的年龄层次


训练要点


for循环结构。

需求说明


商场为了提高销售额,需要对顾客的年龄层次(30岁之上/30岁之下)进行调查(样本数为10),请计算这两个层次的顾客比例。

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


图6.4上机练习2的运行结果


实现思路及关键代码


(1) 定义计数器变量young,记录年龄30岁以下顾客的人数。


(2) 利用循环录入10位顾客的年龄。


参考解决方案

package cn.jbit.loops1;
import java.util.Scanner;
public class AgeRate {
    public static void main(String[] args) {
        int young = 0; //记录年龄30岁(含)以下顾客的人数
        int age = 0;   //保存顾客的年龄
        Scanner input = new Scanner(System.in);
        for(int i = 0; i < 10; i++){
            System.out.print("请输入第" +(i+1)+ "位顾客的年龄:");
            age = input.nextInt();
            if(age > 0 && age <= 30){
                young++;
            }
        }
        System.out.println("30岁以下的比例是:" + young/10.0*100 +"%");
        System.out.println("30岁以上的比例是:" + (1-young/10.0)*100 +"%");
    }
}


6.2 跳转语句

通过对循环结构的学习,我们已经了解了在执行循环时要进行条件判断。只有在条件为false时,才能结束循环。但是,有时根据实际情况需要停止整个循环或者跳到下一次循环,有时需要从程序的一部分跳到程序的其他部分,这些都可以由跳转语句来完成。Java支持三种形式的跳转:break、continue和return。return将在后面的章节中讲到,下面来学习其中的两种:break和continue。


6.2.1 break 语句的使用

在学习switch选择结构时,已经使用过break语句了,下面先回顾一下switch选择结构中break语句的作用。


示例5


package cn.jbit.loops1;
import java.util.*;
public class Schedule {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.print("查看日程表,请输入日期(1-5):");
        int day = input.nextInt();
        switch (day) {
            case 1:
                System.out.println("出席IT科技展剪彩仪式");
                break;
            case 2:
                System.out.println("飞抵香港参加亚太区会议");
                break;
            case 3:
                System.out.println("会议结束游香港海洋公园");
                break;
            case 4:
                System.out.println("抵京召开公司月度股东大会");
                break;
            case 5:
                System.out.println("自由时间");
                break;   
        }
    }
}



示例5演示了一个"日程安排查询程序"。输入数字1〜5 (代表周一〜周五),将看到这一天的行程安排。程序运行结果如图6.5所示。


图6.5示例5的运行结果


在switch选择结构中,break语句用于终止switch语句中的某个分支,使程序跳到switch选择结构的下一条语句。在循环结构中,break语句能发挥什么作用呢?


张浩参加4000m长跑比赛,在400m的跑道上,发令枪响起,他狂奔出去,在这个400m的跑道上循环地跑。他每跑一圈,剩余路程就会减少400m,要跑的圈数也就是循环的次数。但是,在跑步的过程中,他在心里默默地问自己:"我还有力气坚持到最后么?"。如果回答"是",就继续跑下一圈;如果回答"否",则退出。在跑到第八圈时,他无法坚持,退出了比赛。他没能跑完全程,在中间终止了这一循环过程。在这种情形下,我们就可以用break语句来描述,如下所示。


for (int i = 0; i < 100; i++) {
    //跑400m
    if (不能坚持) {
        break;  //退出比赛
    }
}


这就是break语句的功能。我们来解决下面的问题。


问题:循环录入某学生五门课的成绩并计算平均分。如果某分数录入为负,则停止录入并提示录入错误。


分析:在录入分数的过程中,进行条件判断。如果录入为负,则立刻跳出循环。我们使用break语句来解决。


示例6

package cn.jbit.loops1;
import java.util.Scanner;
public class BreakDemo {
    /*
     * 循环录入学生成绩,输入负数则退出
     */
    public static void main(String[] args) {
        int score;                 //每门课的成绩
        int sum = 0;               //成绩之和
        double avg = 0.0;                      //平均分
        boolean isNegative = false;        //是否为负数
        Scanner input = new Scanner(System.in);
        System.out.print("输入学生姓名: ");
        String name = input.next();        //输入姓名
        for(int i = 0; i < 5; i++){        //循环5次录入5门课成绩
            System.out.print("请输入第" + (i+1) + "门课的成绩: ");
            score = input.nextInt();
            if(score < 0){          //输入负数
                isNegative = true;
                break;
            }
            sum = sum + score;        //累加求和
        }
        if(isNegative){
            System.out.println("抱歉,分数录入错误,请重新进行录入!");
        }else{
            avg = sum / 5;             //计算平均分
            System.out.println(name + "的平均分是:" + avg);
        }
    }
}

程序运行结果如图6.6所示。当录入第三门课的成绩"-70"时,输入数值是负数,条件判断 "score < 0" 为true,执行 "isNegative = true",用它来标记是否输入负数;然后执行break语句,直接退出for循环;再执行for循环结构下面的if选择结构,因为boolean类型变量isNegative的值为true,因此输出信息 "抱歉,分数录入错误,请重新进行录入!"。


图6.6示例6的运行结果


小结:break语句用于终止某个循环,使程序跳到循环体外的下一条语句。在循环中位于break后的语句将不再执行,循环也停止执行。


经验:break语句不仅可以用在for循环结构中,也可以用在while和do-while循环结构中。break语句通常与if条件语句一起使用。


6.2.2 continue 语句的使用

根据要求,在循环结构中的if语句中使用break语句退出循环。但是,可能有时会遇到这样的问题:在某次循环中,不执行完所有的循环体,就跳出本次循环,开始执行下一次循环。我们看下面这个示例。


张浩在上次的比赛中没有跑完路程就退出了,他觉得很没面子,这一次他下定决心一定跑完全程。他想了一个办法,就是中途补水。每跑一圈,如果口渴,就从旁边为他加油打气的同学手中接过水壶,喝上几口,然后继续跑。就这样,他终于坚持跑完了全程。如何用程序描述这一过程呢?这时就要用到continue语句,如下所示。


for (int i = 0; i < 10;i++) {
    //跑400m
    if (不口渴) {
        continue;
    }
}


如果口渴,则执行 "接过水壶,喝水;"。如果不口渴,则执行continue语句;continue后面的语句 "接过水壶,喝水" 将不再被执行,之后进入下一次循环。可见,continue用在如下场景:在某次循环中,不执行完循环体中所有的语句,就想跳出此次循环,开始执行下一次循环。看一看下面的问题。


相关文章
|
7月前
|
Java
Java 循环结构
4月更文挑战第9天
|
7月前
|
Java
Java循环结构
Java循环结构
52 0
Java 循环结构 - for, while 及 do...while
Java 循环结构 - for, while 及 do...while
|
4月前
|
Java C语言
|
6月前
|
存储 Java 数据处理
Java中的循环结构语句详解与实战应用
Java中的循环结构语句详解与实战应用
80 2
|
7月前
|
Java
Java中的循环结构详解
Java中的循环结构详解
147 1
|
7月前
|
Java
Java中的判断和循环结构
Java中的判断和循环结构
57 1
|
Java
Java的流程控制(选择结构语句 if ~ switch &循环结构语句dowhile ~ for)
程序执行的控制流程分为三种,也称为三种结构,分别是:顺序结构、和循环结构。 顺序结构指的是程序执行按照代码的编写顺序,依次从上往下开始执行,直到程序结束。程序的执行默认是顺序执行的
134 1
|
7月前
|
Java
Java程序设计基础——循环结构
Java程序设计基础——循环结构
|
7月前
|
Java C语言
【Java开发指南 | 第十二篇】Java循环结构
【Java开发指南 | 第十二篇】Java循环结构
36 2