目录
一 for循环语句
1.for循环的格式
2.执行流程
3.案例练习
4.变式训练
5.知识拓展
二 while循环语句
1.while循环的格式
2.执行流程
3.案例练习
4.变式训练
5.易错知识点
三 do-while循环语句
1.do-while语句的格式
2.执行流程
3.案例练习
4.变式训练
Java的循环语句分为三种,分别为for循环,while循环,do-while循环。
for(初始化语句;条件判断语句;条件控制语句){
循环体语句;
}
①.执行初始化语句
②.执行条件判断语句,看其结果是true还是false
如果是false,循环结束
如果是true,继续循环
③.执行循环体语句
④.执行条件判断语句
⑤.回到②继续执行
案例:求1-5之间的整数和,并把求和结果在控制台输出。
public class Operator{
public static void main(String args[]) {
int sum = 0; //求和的最终结果必须保存起来,需要定义一个变量
//用于保存求和的结果,初始值为0.
for(int i =1;i <= 5 ; i++) //从1开始到5结束的数据,使用循环结构完成
{
sum+=i;
}
System.out.println("1-5之间的整数和为"+sum);
}
}
在控制台输出所有的“水仙花数”(什么是水仙花数?①水仙花数是一个三位数②水仙花数的个位,十位,百位的数字立方和等于原数)
public class Operator{
public static void main(String args[]) {
for(int i = 100;i<1000;i++){
int ge = i%10; //一个三位数取余10就是该三位数的个位。
int shi = i/10%10; //一个三位数除10就是该三位数的百位和十位组成的两位数
//然后再%10则是该三位数的十位
int bai = i/100; //一个三位数/100则是该三位数的百位
if(ge*ge*ge+bai*bai*bai+shi*shi*shi==i)
System.out.println(i+"是水仙花数!!!");
}
}
}
运行结果:
每行打印两个水仙花数
public class Opertor {
public static void main(String[] args) {
int count = 0;// 定义一个记录行个数的变量,用于控制换行
for (int i=100;i<1000;i++){
int ge = i%10;
int shi = i/10%10;
int bai = i/100;
if(ge*ge*ge+shi*shi*shi+bai*bai*bai==i){
System.out.print(i+"是水仙花数 ");
count++; // 记录数自动加1
if(count%2==0){ // 用记录数来判断是否是偶数个
System.out.println(); //换行
}
}
}
}
}
运行结果:
①.for循环语法格式中: for(初始化语句;条件判断语句;条件控制语句){ 循环体语句;}中,"初始化语句","条件判断语句","条件控制语句"三者可以同时为空——for( ; ;){循环体语句;}表示无限循环直到资源耗尽。
②.for循环语法格式中: for(初始化语句;条件判断语句;条件控制语句){ 循环体语句;}中,"条件判断语句"可以为空——for(初始化语句; ;条件控制语句){ 循环体语句;},表示无限循环直到资源耗尽。
③.for循环语法格式中:for(初始化语句;条件判断语句;条件控制语句){ 循环体语句;}中,如果"循环体语句"不打大括号,则表示循环for循环下面的第一条语句。
初始化语句;
while(条件判断语句){
循环体语句;
条件控制语句;
}
①.执行初始化语句
②.执行条件判断语句,看其结果是true还是false
如果是false,循环结束
如果是true,继续循环
③.执行循环体语句
④.执行条件控制语句
⑤.回到②继续
需求:世界最高山峰是珠穆朗玛峰(8844.43m=8844430mm),假如我有一张足够大的纸,它的厚度是0.1mm,请问我折叠多少次,可以折成珠穆朗玛峰的高度?
/*
因为要反复折叠,所以要使用循环,但是不知道要折叠多少次,
这种情况更适合用while循环
*/
public class Operator {
public static void main(String[] args) {
int count = 0;//记录次数
double paper = 0.1;
while (paper<8848000){
paper = paper*2;
count++;
}
System.out.println("要折"+count+"次");
}
}
运行结果:
要折27次
要求用户输入一个0到2之间的整数,如果用户输入0输出“你出的是石头”,如果用户输入1就输出“你出的是剪刀”,如果用户输入的是2就输出“你出的是布”,然后再问是否要继续出拳,如果回答“y”就重复以上过程,否则结束程序。
import java.util.Scanner;
public class Exec04 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String m ="y";
while(m.equals("y")){
System.out.println("请输入一个0-2之间的整数");
int n = sc.nextInt();
if(n==1){
System.out.println("你出的是剪刀");
}
else if(n==2){
System.out.println("你出的是布");
}else if(n==0){
System.out.println("你出的是石头");
}else {
System.out.println("您输入的数字有误!!!");
}
System.out.println("是否要继续出拳? y/n?");
m = sc.next();
}
}
}
运行结果:
①. 无限循环:当循环条件永远为真时,会导致无限循环。这可能是由于循环条件没有正确设置或没有在循环内部修改循环变量导致的。为避免无限循环,确保循环条件最终会变为假。
②.未初始化循环变量:在进入while循环之前,确保循环变量已经正确初始化。如果循环变量未初始化,可能会导致循环无法正常执行或产生意外的结果。
③.遗漏break或continue语句:在while循环中,break语句用于跳出循环,continue语句用于跳过当前循环的剩余部分并立即进入下一次循环。如果在循环内遗漏了这些语句,可能会导致循环无法正常结束或无法跳过某些部分。
初始化语句;
do{
循环体语句;
条件控制语句;
}while(条件判断语句);
①执行初始化语句
②执行循环体语句
③执行条件控制语句
④执行条件判断语句,看其结果是true还是false
如果是false,循环结束
如果是true,继续执行
⑤回到②继续
使用do-while循环语句遍历1-10
public class Opeartor {
public static void main(String[] args) {
int start = 1;
int end = 10;
do {
System.out.println(start);
start++;
} while (start <= end);
}
}
运行结果
1
2
3
4
5
6
7
8
9
10
计算5的阶乘5!
public class Factorial {
public static void main(String[] args) {
int n = 5;
int factorial = 1;
do {
factorial *= n;
n--;
} while (n > 0);
System.out.println("5! = " + factorial);
}
}
运行结果
5!=120