全部章节   >>>>


本章目录

6.1 for循环

6.1.1 for循环的简介

6.1.2 for循环的使用

6.1.3 for循环的表达式

6.1.4 实践练习

6.2 深入理解for循环(一)

6.2.1 for循环案例(一)

6.2.2 求水仙花数

6.2.3 实践练习

6.3 深入理解for循环(二)

6.2.1 三种循环的区别

6.3.2 各种循环的使用场景

6.3.3 实践练习

6.4 跳转语句

6.4.1 break语句

6.4.2 continue语句

6.4.3 实践练习

总结:


6.1 for循环

6.1.1 for循环的简介

回顾问题:输出100次“我爱你!”

for比while的代码更简洁,for语句封装了循环的4要素。

6.1.2 for循环的使用

示例:使用for循环实现求1~100的和

int sum =0;
for (int i = 1; i<= 100; i++) {
sum += i; //累加求和
}
System.out.println("1~100的和为"+sum);

示例:输入一个学生姓名和5门课程成绩,求其总成绩

//通过循环依次接收每门课程成绩
for (int i = 1; i <= 5; i++){
System.out.printf("请输入第%d门课程成绩:\n", i);
score = sc.nextInt();
sum += score;//累加
}
System.out.printf("%s同学本次考试总成绩:%d", name, sum);

6.1.3 for循环的表达式

循环次数与循环控制变量的关系:

循环控制变量的初值

循环条件

循环控制变量改变

循环次数

int i = 0

i < 5

i++

5

int i = 0

i <= 4

i++

5

int i = 5

i > 0

i--

5

int i = 4

i >= 0

i--

5

示例:输入一个数字求其加法表

Scanner input = new Scanner(System.in);
System.out.println(" 请输入一个数字 :");
int num = input.nextInt();
System.out.println(" 数字 "+num+" 的加法表如下 :");
for (int i = 0,j = num; i<=num; i++,j--) {
System.out.printf("%d + %d = %d\n",i,j,num);
}

for循环常见问题:

(1)省略表达式1,如for;表达式2;表达式3)。表达式1用于对循环控制变量进行初始化,省略for循不的表达式1,不会出现语法错误,我们可以将循环控制变量初始化放置到for循环之前。例如:

int i=1;
for(; i<=5; i++) {
System.out. printin( "Hello Java!" );
}

(2)省略表达式2,如for(表达式1;表达式3)。表达式2用于判断循环条件是否成立,省略表达式2后,即没有循环判断,循环条件永远为真。此时,循环将出现死循环。例如:

for(int i = 1; ; i++){
System.out.printIn( "Hello Java!" ); 
}

(3)省略表达式3,如for( 表达式1;表达式2;)。表达式3用于修改循环控制变量的值,省略表达式3后,循环控制变量的值不会变化,这样会导致循环永远为真,出现死循环。为了避免出现死循环,可以将表达式3放置于循环操作中,以达到未省略表达式3的效果。例如:

for(int i =0; i < 5;){
System.out.printin( "Hello Java!" );
i++;
}

(4)省略所有的表达式,如for(; ;)o省略for循环的三个表达式后,该循环则为死循环,想要结束死循环可以通过跳转语句实现。省略for循环的表达式后,不会导致程序的语法错误,但是程序的结构不够清晰,不便于阅读与维护。建议使用for循环时尽量不省略任何一一个表达式。

6.1.4 实践练习

6.2 深入理解for循环(一)

6.2.1 for循环案例(一)

(1)表达式:声明变量num用于储蓄用户输入的数字,找查能够整除num的数字,需从1开始直到num-1为止,因此,声明变量i作为循环控制变量,for循环结构中的3个表达式如下:

表达式1:int i = ;
表达式2:i < num
表达式3:i++

(2)循环操作:重复执行的操作是逐一判断1、2、3、.... num-1,能否被num整除,若能够被整除,则将对应数字进行累加。因此,声明变量sum,用于存储累加值,设置初始值为0,由于需要从1开始进行判断,而1的初始值也为1,此时,只需将i反复与num进行整除判断即可,将能整除num的i累加至sum中。

示例:在控制台中输入一个自然数,判断该数字是否为完全数。完全数,又称完美数,是指能整除该数字的所有数字(除本身外)之和等于本身的数字。

// 使用循环,在 1 ~ num-1中查找能整除 num的数字
for (int i = 1; i < num; i++) {
// 若能够整除 num,则进行累加
if (num % i == 0)
sum += i;
}
if (sum == num) // 若累加之和与 num相等,则为完全数
System.out.printf("%d 是完全数 \n", num);
else
System.out.printf("%d 不是完全数 \n", num);

6.2.2 求水仙花数

示例:在控制台中输出100~999之间所有的“水仙花数”。水仙花数是指各位数字的3 次幂之和等于本身的数字。例如:数字153。

 for (int i = 100; i < 1000; i++) {
// 分离个位数字
int s = i%10;
int t = i/10%10;
int h = i / 100;
// 判断是否为水仙花数
if (i == s * s * s + t * t * t + h * h * h)
System.out.println(i);
}

6.2.3 实践练习

6.3 深入理解for循环(二)

6.2.1 三种循环的区别

(1)区别1:语法

(2)区别2:执行顺序

while 循环:先判断,再执行

do-while循环:先执行,再判断

for循环:先判断,再执行

(3)区别3:适用情况

循环次数确定的情况,通常选用for循环

循环次数不确定的情况,通常选用while或do-while循环

6.3.2 各种循环的使用场景

思考:年存款利率为3%, 本金为10000元,当存款总额超过 12000 元时,收益具体是多少 ?

分析:

需求:该业务可以转换为“当”存款总额小于12000元时,以3%利率增长。

条件:存款 < 12000。

结论:不明确循环次数,也无序先执行循环体,则用while循环

示例:年存款利率为3%, 本金为10000元,当存款总额超过 12000 元时,收益具体是多少 ?

		double total = 10000;// 起始余额
double income;// 收益
while (total <= 12000) {
total = total + (total * 0.03); // 增加收益后的余额
}
income = total - 10000; // 收益赋值
System.out.printf(" 收益为 %.2f ", income);

思考:西游记中,孙悟空让猪八戒挑水,直到孙悟空满意为止。

分析:

需求:孙悟空让猪八戒挑水,猪八戒在每次挑完水后询问孙悟空还需要挑水与否,直到孙悟空说不用挑水为止。

条件:孙悟空说需要挑水。

结论:不明确循环次数且需要在执行一次后再次询问,所以使用do-while

示例:西游记中,孙悟空让猪八戒挑水,直到孙悟空满意为止。

do{
count++;
System.out.printf(" 猪八戒挑了第 %d 桶水后。\n",count);
System.out.println(" 猴哥,还要继续挑水吗? [y/n]");
answer = sc.next().charAt(0);
}while(answer == 'y' || answer == 'Y');
System.out.printf(" 猪八戒一共挑了 %d桶水后,停止了挑水工作。",count);

经验:

如果业务中可以获取到一个确切的循环次数,可以考虑用for循环,简而言之就是如果明确知道要重复几次做同样的事情,则使用 for 循环。

for语句场景:如果存在一个确切循环次数时,优先选择for循环实现。

在选择循环结构时,不是只有某种循环才能解决问题,而是优先选择对应的循环会使得代码更简单,业务处理更方便。

6.3.3 实践练习

6.4 跳转语句

  • Java语言支持3种形式的跳转语句:break语句、continue语句和return语句。
  • 循环结构中,常用的是:break语句和continue语句。

6.4.1 break语句

break:改变程序控制流程

用于do-while、while、for中时,可跳出循环而执行循环后面的语句

示例:输入一个区间,找出区间中第一个能够被3整除的数字。

Scanner sc = new Scanner(System.in);
int start, end;//区间
System.out.println("请输入一个区间:");
start = sc.nextInt();
end = sc.nextInt();
System.out.println("区间中能够被3整除的第一个数字:");
for (int i = start; i <= end; i++) {
if (i % 3 == 0) {
System.out.println(i);
break;//跳出循环结构
}
}
System.out.println("查找结束");

6.4.2 continue语句

continue:只能用于循环中

continue作用:跳过循环体中剩余的语句而执行下一次循环

示例:编写Java程序,累加1~99数字之和,要求跳过各位中含有3的数字。

int sum = 0;
for (int i = 1; i < 100; i++) {
int s = i % 10;//分割个位
int t = i / 10;//分割十位
if (s == 3 || t == 3)
continue;//进入下次循环
sum += i;//累加满足条件的数据
}
System.out.println("1~99之间各位中不包含3的数字之和:" + sum);

6.4.3 实践练习

总结:

  • for循环中的表达式2称为条件表达式,用于判断for循环的条件是否成立,通常为关系表达式或逻辑表达式。
  • for循环中的表达式3称为修改表达式,用于修改循环控制变量的值,通常对循环变量进行自增或自减操作。
  • break语句可以在循环结构中使用,用于跳出循环,即提前结束循环。
  • continue语句只能在循环结构中使用,用于终止本次循环,并且跳转至下一次循环。

Java程序设计基础笔记 • 【第6章 循环结构进阶】的更多相关文章

  1. Java程序设计基础笔记 • 【目录】

    持续更新中- 我的大学笔记>>> 章节 内容 实践练习 Java程序设计基础作业目录(作业笔记) 第1章 Java程序设计基础笔记 • [第1章 初识Java] 第2章 Java程序 ...

  2. Java 第8章 循环结构进阶

    循环结构进阶 什么是二重循环? 二重循环的执行顺序是什么?

  3. Java程序设计基础笔记 • 【第5章 循环结构】

    全部章节   >>>> 本章目录 5.1 while循环结构 5.1.1 循环简介 5.1.2 while循环 5.1.3 while循环的使用 5.1.4 while循环的注 ...

  4. Java程序设计基础笔记 • 【第10章 数组】

    全部章节   >>>> 本章目录 10.1 数组概述 10.1.1 数组优势 10.1.2 Java中的数组 10.1.3 数组的分类 10.2 一维数组 10.2.1 数组的 ...

  5. Java程序设计基础笔记 • 【第9章 方法与参数类型】

    全部章节   >>>> 本章目录 9.1 有参数有返回值的方法 9.1.1 有参数有返回值的方法的定义和调用 9.1.2 返回值的传递过程 9.1.3 方法返回值的注意事项 9 ...

  6. Java程序设计基础笔记 • 【第1章 初识Java】

    全部章节   >>>> 本章目录 1.1 程序的概念及Java语言介绍 1.1.1 生活中的程序 1.1.2 计算机程序 1.1.3 算法和流程图 1.1.4 实践练习 1.2 ...

  7. Java程序设计基础笔记 • 【第4章 条件结构】

    全部章节   >>>> 本章目录 4.1 条件结构 4.1.1 程序流程控制 ​4.1.2 单分支if结构 4.1.3 双分支if结构 4.1.4 实践练习 4.2 多重条件结 ...

  8. Java程序设计基础笔记 • 【第7章 Java中的类和对象】

    全部章节   >>>> 本章目录 7.1 理解类和对象 7.1.1 对象 7.1.2 抽象与类 7.1.3 类与对象的关系: 7.2 Java中的类和对象 7.2.1 类的定义 ...

  9. 【Java】《Java程序设计基础教程》第一章学习

    一.Java概述 1.介绍了Java语言的由来 2.Java语言的特点:简单.面向对象.分布式.高效解释执行.健壮.安全.结构中立.可移植.高效率.多线程.动态 3.Java语言的实现机制,引入虚拟机 ...

随机推荐

  1. Oracle 学习PL/SQL

    先上一张实用的图:用于转义字符的. SQL> select chr(42) ||'is what?' from dual; CHR(42)||---------*is what? 想转义哪个就转 ...

  2. SpringBoot(3):SpringData 数据访问

    一. 简介 Spring Data是一个用于简化数据库访问,并支持云服务的开源框架:其主要目标是 使得对数据的访问变得方便快捷.对于数据访问层,无论是 SQL(关系型数据库) 还是 NOSQL(非关系 ...

  3. 【Spring Framework】Spring入门教程(二)基于xml配置对象容器

    基于xml配置对象容器--xml 标签说明 alias标签 作用:为已配置的bean设置别名 --applicationContext.xml配置文件 <?xml version="1 ...

  4. HTTP协议及常见状态码

    超文本传输协议(HTTP)是用于传输诸如HTML的超媒体文档的应用层协议.它被设计用于Web浏览器和Web服务器之间的通信,但它也可以用于其他目的. HTTP遵循经典的客户端-服务端模型,客户端打开一 ...

  5. 【Java 基础】Java 根据Class获取对象实例

    Spring在代码中获取bean的几种方式 方法一:在初始化时保存ApplicationContext对象 方法二:通过Spring提供的utils类获取ApplicationContext对象 方法 ...

  6. Mysql配置 主主同步

    目录 一.准备 二.操作 A数据库操作 B数据库操作 A数据库操作 一.准备 1.两个数据库版本最好一致 2.两个数据库内数据保持一致,若不一致,可手动调整,比如A比B多一个库,那将这个库导入到B库, ...

  7. 效验pipeline语法

    目录 一.简介 二.配置 一.简介 因为jenkins pipeline不像JAVA之类的语言那样应用广泛,所以没有相关的代码检测插件. 2018年11月初,Jenkins官方博客介绍了一个VS Co ...

  8. Nginx区分浏览器

    目录 一.简介 二.配置 一.简介 场景: 不同浏览器对网页的兼容性是不一样的,所以针对火狐和curl,返回不同内容 原理: 使用if对http_user_agent变量进行判断,这个变量会显示访问时 ...

  9. 【划重点】Python matplotlib绘图建立画布和坐标系

    一.建立画布 import matplotlib.pyplot as plt import numpy as np x=np.arange(8) y=np.arange(8) print(x,y) # ...

  10. MySQL数据库如何实现增量备份

    1 .通过SHOW VARIABLES LIKE '%log_bin%';查看数据库是否开启增量备份log_bin=ON则为开启log_bin=OFF则为关闭 2 .修改mysql配置文件mysql. ...