java循环结构-4

目录

1.背诵英文单词

2. 预习并回答以下问题

3. 预习并完成编码题

6.1 for循环

6.1.1 为什么需要for循环

6.1.2 什么是 for 循环结构

6.1.3 如何使用 for 循环结构


本章工作任务

  • 统计顾客的年龄层次比例
  • 循环录入会员信息
  • 验证用户登录信息

本章技能目标

  • 会使用 for 循环结构
  • 会在程序中使用 break 和 continue

本章简介

在编程过程中,把一些重复执行的代码采用循环结构进行描述,可大大简化编码工作,使得代码更加简洁、易读。第5章我们学习了 while和do-while循环结构,相信通过使用循环结构编程,大家一定体会到了它的魅力。while循环结构是先进行条件判断,然后执行循环操作;do-while循环结构是先执行一次循环操作,然后进行判断。但是Java中的循环结构不只有while和do-while两种循环结构,还有for循环结构,它的语法结构是怎样的?有什么功能?本章我们将学习for循环结构。

预习作业

指导:

请按以下步骤预习本章内容:

1.阅读、学习本章内容。

2.标注出本章看不懂或存在疑惑的部分。

3.整理、记录学习中的问题。

4..熟记本章的英文单词。

请到中心听课前,完成下面的作业。

1.背诵英文单词

请在预习时找出下列单词在教材中的用法,了解它们的含义和发音。

(1) rate       [reɪt]:n. 比率,率;速度;价格;等级

(2) young      [jʌŋ]: adj. 年轻的;初期的;没有经验的;n. 年轻人;(动物的)崽,仔。

(3) schedule   [ˈskedʒuːl]: n. 计划(表);时间表;一览表;(电视或广播)节目表;课程表;报税单;附件(尤指表格、单据等)

(4) negative   [ˈneɡətɪv]:adj. [数] 负的;消极的;否定的;阴性的。

(5) customer   [ˈkʌstəmər]:n. 顾客;家伙

(6) birthday   [ˈbɜːrθdeɪ]: n. 生日,诞辰;诞生的日子

(7) point      [pɔɪnt]:n. 要点;得分;标点;[机] 尖端;vt. 指向;弄尖;加标点于。

(8) continue   [kənˈtɪnjuː]:vi. 继续,延续;仍旧,连续;vt. 继续说…;使…继续;使…延长。

(9) return     [rɪˈtɜːrn]: v. 返回;(尤指感觉)恢复;n. 返回;恢复;归还。

(10)for        [fər,fɔːr]:prep. (表示对象、用途等)给,对;为了; 关于;conj. 因为,由于

2. 预习并回答以下问题

请阅读本章内容,在作业本上完成以下简答题。

(1) for循环结构的语法和执行顺序是什么?

(2) 什么情况下适合使用for循环结构?

(3) 阅读代码,并写出输出结果。

public static void main(String [ ] args) {

int num;

for(num=l;num<=10;num+=2){

System out.printin(num);

}

}

3. 预习并完成编码题

(1) 编写并完成本章中所有示例代码。

(2) 请使用Java语言编写代码,完成以下功能。

①  使用for循环实现:输出100以内的奇数。 

②  使用for循环实现:统计0~100中的整数中有多少个是7的倍数。

技术内容

6.1 for循环

6.1.1 为什么需要for循环

通过使用while循环,张浩轻松解决了老师补充的问题,连续输出100次 "好好学习,天天向上!",如示例1所示。

示例 1

public class Main {

   
public static void main(String[] args) {
       
int i = 0;
       
while(i < 100) {
           
System.out.println("好好学习,天天向上!");
            i++;

        }
    }
}

观察代码不难发现,这里的循环次数 "100" 已经固定,对于这种情况我们也可以选用for循环结构来实现,如示例2所示。

示例2

public class Main {

   
public static void main(String[] args) {
       
for (int i = 0; i < 100; i++) {
           
System.out.println("好好学习,天天向上!");
        }
    }
}

通过运行程序,我们可以看到示例1和示例2的输出结果是一样的,但示例2的代码看起来更加简洁。因此,在解决有固定循环次数的问题时,可以首选for循环结构。下面就来介绍for循环结构。

6.1.2 什么是 for 循环结构

循环语句的主要作用是反复执行一段代码,直到满足一定的条件为止。总结一下,可以把循环结构分成四个部分。

  • 初始部分:设置循环的初始状态,如设置记录循环次数的变量i为0。
  • 循环体:重复执行的代码,即输出 "好好学习,天天向上!"。
  • 迭代部分:下一次循环开始前要钩行的部分,在while循环结构中它作为循环体的一部分,如使用"i++;"进行循环次数的累加。
  • 循环条件:判断是否继续循环的条件,如使用 "i<100" 判断循环次数是否已经达到100。

在for循环结构中,这几个部分同样必不可少,不然循环就会出现错误。for循环的一般格式如下。

语法:

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

     //循环体

}

记住,这里的for就是此循环结构的关键字。每个表达式的含义如表6-1所示。

表6-1 for循环结构中三个表达式的含义

表达式

形  式

功  能

举例

表达式 1

赋值语句

循环结构的初始部分,为循环变量赋初值

int i = 0

表达式 2

条件语句

循环结构的循环条件

i < 100

表达式 3

赋值语句,通常使用++--运算符

循环结构的迭代部分,通常用来修改循环

变量的值

i++

for关键字后面括号中的三个表达式必须用 ; 隔开。for循环中的这三个部分及{}中的循环体使循环结构必需的四个组成部分完美地结合在了一起,非常简明。


了解了 for循环结构的语法,那么它的执行过程是怎样的呢?结合图6.1和示例2来理解。

图6.1 for循环结构的执行过程

for循环结构执行的顺序如下。

(1) 执行初始部分(int i=0;)。

(2) 进行循环条件判断(i<100;)。

(3) 根据循环条件判断结果。如果为true,则执行循环体;如果为false,则退出循环,步骤(4)和步骤(5)均不执行。

(4) 执行迭代部分,改变循环变量值(i++)。

(5) 依次重复步骤(2)~步骤(4),直到退出for循环结构。

可见,在for循环结构中,表达式1这个初始部分仅仅执行了一次。

6.1.3 如何使用 for 循环结构

问题:循环输入某同学结业考试的五门课的成绩,并计算平均分。

分析:很明显,循环次数是固定的五次,因此我们首选for循环结构。使用for循环结构的步骤和使用while与do-while循环结构一样。

(1)要明确循环条件和循环操作,这里的循环条件是“循环次数不足五次,继续执行”,循环操作是“录入成绩,并计算成绩之和”。

(2) 套用for语法写出代码。

(3) 检查循环是否能够退出。

示例3

package cn.jbit.loops1;
import java.util.*;
public class AverageScore{
   
/*
     *
统计80分以上学生比例
    
*/
   
public static void main(String[] args){
       
int score;             //每门课的成绩
       
int sum = 0;           //成绩之和
       
double avg = 0.0;      //平均分
       
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("请输入5门功课中第" + (i+1) + "门课的成绩: ");
            score =
input.nextInt();   //录入成绩
           
sum = sum + score;         //计算成绩和
       
}
        avg = (
double)sum / 5;                  //计算平均分
       
System.out.println(name + "的平均分是:" + avg);
    }
}

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

图6.2示例3的运行结果

在示例3中,循环的四个部分分别如下。

(1) "int i = 0"是初始部分,声明循环变量i,用来记录循环次数。

(2) "i<5"是循环条件。

(3) "i++"是迭代部分,更新循环变量的值。

(4) 循环体是"录入成绩,并累加求和"。

整个循环过程:首先执行初始部分,即i=0;然后判断循环条件,如果为true,则执行一次循环体;循环体结束后,执行迭代部分i++;再判断循环条件,如果仍为true,则继续执行循环体、迭代部分……以此类推,直到循环条件为false,退出循环。

仔细体会for循环结构各个部分的执行顺序,会发现表达式1只执行一次,表达式2和表达式3则可能执行多次。循环体可能多次执行,也可能一次都不执行。

现在学会了如何使用for循环,赶快动手试一试解决下面的问题吧。


问题:输入任意一个整数,根据这个值输出加法表。假设输入值为9,程序运行结果如图6.3所示。

图6.3运行结果

分析:由图6.3可知,循环次数为固定值,即从0递增到输入的值,循环体为两个加数求和。一个加数从0开始递增到输入的值;另一个加数相反,从输入值递减至0。其具体代码如示例4所示。

示例4

package cn.jbit.loops1;
import java.util.*;
public class SumTable {
   
/*
     *
输入整数,输出其加法表
    
*/
   
public static void main(String[] args){
       
int i, j;
       
Scanner input = new Scanner(System.in);
       
System.out.print("请输入一个值: ");
       
int val = input.nextInt();
       
System.out.println("根据这个值可以输出以下加法表: ");
       
for(i = 0, j = val; i <= val; i++, j--){
           
System.out.println(i + " + " + j + " = " + (i+j));
        }
    }
}

注意:在示例4的for循环结构中,表达式1使用了一个特殊的形式,它是用“” 隔开的多个表达式组成的表达式。

i = 0, j = val;

在表达式1中,分别对两个变量ij赋初值,它们表示两个加数。表达式3也使用了这种形式。

i++, j--;

在这种特殊形式的表达式中,运算顺序是从左到右的。每次循环体执行完,先执行i自加1,再执行j自减1。通过示例,已经知道了 for循环结构的用法,在实际使用中还有哪些需要注意的地方呢?

注意:根据for循环结构的语法,我们知道for循环结构中有三个表达式,在语法上,这三个表达式都可以省略,但表达式后面的分号不能省略。如果省略了表达式,要注意保证循环能够正常运行。

  • 省略“表达式1”,如下面的for循环语句。

for ( ; i< 10; i++);

这个for循环虽然省略了 “表达式1”,但其后的 “;” 号没有省略。在实际编程中,如果出现“表达式1”省略的情况,则需要在for语句前给循环变量赋值,因此,可将上面的语句修改如下。

int i = 0;

for ( ; i< 10; i++);

  • 省略“表达式2”,即不判断循环条件,循环将无终止运行,也就形成了 “死循环”,如下面的for语句。

for(int i = 0; ; i++);

在编程过程中要避免“死循环”的出现,所以对上面的语句可以做如下修改:一种方法是添加“表达式2”,另一种方法是在循环体中使用break强制跳出循环结构。关于break的用法将在6.2节介绍。

  • 省略“表达式3”,即不改变循环变量的值,也会出现“死循环”,如下面的语句。

for (int i = 0; i < 10;);

这里省略了 “表达式3”,变量i的值始终为0,因此循环条件永远成立,程序就会出现“死循环”,在这种情况下,我们可以在循环体中改变i的值,语句如下。

for (int i = 0; i < 10; ) {

i++;

}

这样就能使循环正常结束,不会出现“死循环”。

  • 三个表达式都省略,即如下语句。

for (;;);

上面这个语句在语法上没有错,但逻辑上是错误的,参考上面三种情况的描述进行修改。

经验:在实际开发中,为了提高代码的可读性,尽量不要省略各个表达式。如果需要省略,可以考虑是否改用while或do-while循环结构。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值