Java基础-循环结构

本文详细介绍了Java中的循环结构,包括while、do while、for循环的使用及区别。通过实例演示了循环四要素,并对比了它们的执行流程。此外,还讲解了do while的适用场景和for循环的灵活性。文章提供了多个练习题,如计算序列和、打印乘法口诀、以及解决百钱买百鸡问题等,帮助读者深入理解循环控制语句。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

@[TOC](JAVA基础-循环结构)

循环结构—一重循环

while、do while、for

通过案例来引出循环:
【1】求合:1+2+3+4+5

public class TestWhile{
        public static void main(String[] args){
                //功能:1+2+3+4+5:
                //定义变量:
                int num1 = 1;
                int num2 = 2;
                int num3 = 3;
                int num4 = 4;
                int num5 = 5;
                //定义一个求和变量:
                int sum = 0;
                sum += num1;
                sum += num2;
                sum += num3;
                sum += num4;
                sum += num5;
                System.out.println(sum);
        }
}

缺点:变量定义过多
解决办法:引用num++,来减少num的定义

public class TestWhile{
        public static void main(String[] args){
                //功能:1+2+3+4+5:
                //定义变量:
                int num = 1;
                //定义一个求和变量:
                int sum = 0;
                sum += num;
                num++;
                sum += num;
                num++;
                sum += num;
                num++;
                sum += num;
                num++;
                sum += num;
                num++;
                System.out.println(sum);
        }
}

缺点:重复计算太多
解决办法:引入循环:

public class TestWhile{
        public static void main(String[] args){
                //功能:1+2+3+4+5:
                //定义变量(初始化):
                int num = 1;
                //定义一个求和变量:
                int sum = 0;
                //while循环
                while(num<=5){
                        sum += num;
                        num++;
                }		
                System.out.println(sum);
        }
}

【while循环原理】先进行()中的判定,结果为布尔类型,判断结果为true,则开始执行{}内容,如果判断结果为false,则循环结束!

【执行过程】
num=1 sum=0
(1).num=0<=5—》true—》sum=1 num=2;
(2).num=1<=5—》true—》sum=3 num=3;
(3).num=2<=5—》true—》sum=6 num=4;
(4).num=3<=5—》true—》sum=10 num=5;
(5).num=4<=5—》true—》sum=15 num=6;
(6).num=6<=5—》false—》循环终止,输出sum:15

【循环四要素】
【条件初始化】初始化,只执行一次,while循环中,需要把初始化放在循环体外,否则每次执行循环体都将进行条件初始化。
【条件判断】用于判断是否需要执行
【循环体】判断为true则执行
【迭代】判断为true则执行
【do while与while的区别】
while判断后再执行,do while则先执行之后再进行判断。
【do while的使用场景】
考试补考(需要先考试获取成绩之后才能知道是否需要补考,所以要先执行,再判断。)
【for(形式灵活,结构如下)】
for(条件初始化;条件判断;迭代){
循环体
}
【while、do while、for的效率谁更高】
一样高(由于for形式比较简单,日常一般使用for循环)
【练习】
【1+2+3+…+100】

//求:1+2+3+.....+100
public class PracticeBk01{
	public static void main(String[] args){
		int sum=0;
		int num=1;
		while(num<=100){
			sum+=num;
			num++;
		}
		System.out.println(sum);
	}
}

在这里插入图片描述
【3691215】

//求3*6*9*12*15
public class PracticeBk02{
	public static void main(String[] args){
		int sum=1;
		int num=3;
		while(num<=15){
			sum*=num;
			num = num+3;
		}
		System.out.println(sum);
	}
}

在这里插入图片描述
【输出1-100中被4整除的数,每行输出6个】

//输出1-100中被4整除的数,每行输出6个
public class PracticeBk03{
	public static void main(String[] args){
		int num = 1;
		int count = 0;
		while(num<=100){
			if(num%4==0){
			if(count%6==0){
				System.out.println();
			}
			count++;
			System.out.print(num+"\t");
			}
			num++;
		}
	}
}

在这里插入图片描述
【break、continue、return的区别】
【break】
1.用于switch分支,每个case分支后加上break关键字,可以结束分支,防止“穿透”。
2.用于循环中,中断最近的一个循环。
【continue】
终止本次循环,执行下一次循环(类似遇到continue直接跳过当前的判断条件,进行下一个的判断。)
【return】
直接停止方法
【练习】
实现一个功能:
1.请录入10个整数,当输入的数是666的时候,退出程序。
2.判断其中录入正数的个数并输出。
3.判断系统的退出状态:是正常退出还是被迫退出。

/*   实现一个功能:
1.请录入10个整数,当输入的数是666的时候,退出程序。
2.判断其中录入正数的个数并输出。
3.判断系统的退出状态:是正常退出还是被迫退出。*/
import java.util.Scanner;
public class PracticeBk04{
	public static void main(String[] args){
		    //引入一个布尔类型的变量,当做一个“开关”,默认开关是开着的
                boolean flag = true;
		int count = 0;//用于记数
		Scanner SC = new Scanner(System.in);
		for(int i = 1;i<=10;i++){
			System.out.println("请录入第"+i+"个整数:");
			int num = SC.nextInt();
			if(num>0){
			count++;
			}
			if(num==666){
				flag=false;
				break;
			}
		}
		if(flag){//默认为flag=true
			System.out.println("正常退出!");
		}else{
			System.out.println("被迫退出!");
		}
		System.out.println("输入的正数个数为:"+count);
	}
}

在这里插入图片描述

循环结构—二重循环

【案例分析】
乘法口诀:
11=1
1
2=2 22=4
1
3=3 23=6 33=9
14=4 24=8 34=12 44=16
15=5 25=10 35=15 45=20 55=25
1
6=6 26=12 36=18 46=24 56=30 66=36
1
7=7 27=14 37=21 47=28 57=35 67=42 77=49
18=8 28=16 38=24 48=32 58=40 68=48 78=56 88=64
19=9 29=18 39=27 49=36 59=45 69=54 79=63 89=72 9*9=81

/*乘法口诀
1*1=1
1*2=2   2*2=4
1*3=3   2*3=6   3*3=9
1*4=4   2*4=8   3*4=12  4*4=16
1*5=5   2*5=10  3*5=15  4*5=20  5*5=25
1*6=6   2*6=12  3*6=18  4*6=24  5*6=30  6*6=36
1*7=7   2*7=14  3*7=21  4*7=28  5*7=35  6*7=42  7*7=49
1*8=8   2*8=16  3*8=24  4*8=32  5*8=40  6*8=48  7*8=56  8*8=64
1*9=9   2*9=18  3*9=27  4*9=36  5*9=45  6*9=54  7*9=63  8*9=72  9*9=81*/
public class PracticeBk05{
	public static void main(String[] args){
		for(int i = 1;i<=9;i++){
			for(int j = 1;j<=i;j++){
				System.out.print(j+"*"+i+"="+j*i+"\t");	
			}
				System.out.println();
		}
	}
}

在这里插入图片描述
19=9 29=18 39=27 49=36 59=45 69=54 79=63 89=72 99=81
1
8=8 28=16 38=24 48=32 58=40 68=48 78=56 88=64
1
7=7 27=14 37=21 47=28 57=35 67=42 77=49
16=6 26=12 36=18 46=24 56=30 66=36
15=5 25=10 35=15 45=20 55=25
1
4=4 24=8 34=12 44=16
1
3=3 23=6 33=9
12=2 22=4
1*1=1

/*乘法口诀:
1*9=9   2*9=18  3*9=27  4*9=36  5*9=45  6*9=54  7*9=63  8*9=72  9*9=81
1*8=8   2*8=16  3*8=24  4*8=32  5*8=40  6*8=48  7*8=56  8*8=64
1*7=7   2*7=14  3*7=21  4*7=28  5*7=35  6*7=42  7*7=49
1*6=6   2*6=12  3*6=18  4*6=24  5*6=30  6*6=36
1*5=5   2*5=10  3*5=15  4*5=20  5*5=25
1*4=4   2*4=8   3*4=12  4*4=16
1*3=3   2*3=6   3*3=9
1*2=2   2*2=4
1*1=1
*/
public class PracticeBk06{
	public static void main(String[] args){
		for(int i = 9;i>=0;i=i-1){
			for(int j = 1;j<=i;j++){
				System.out.print(j+"*"+i+"="+j*i+"\t");	
			}
			System.out.println();
		}
	}
}

在这里插入图片描述
用*打印各种形状
【矩形/前面有空格的矩形】

//用*画各种图形
//矩形(8*4):
public class PracticeBk07{
	public static void main(String[] args){
		for(int i = 1;i<=4;i++){
			for(int j = 1;j<=8;j++){
				System.out.print("*");
			}
			System.out.println();
		}
//矩形每列前面加空格
		for(int i = 1;i<=4;i++){//控制行数
			for(int num = 1;num<=4;num++){//控制空格数
				System.out.print(" ");
			}
			for(int j = 1;j<=8;j++){//控制列数
				System.out.print("*");
			}
			System.out.println();
		}
	}
}

在这里插入图片描述
【平行四边形】

//平行四边形:
public class PracticeBk08{
	public static void main(String[] args){
		for(int i = 1;i<=4;i++){//控制行数
			for(int num = 1;num<=(4-i);num++){//控制空格数
				System.out.print(" ");
			}
			for(int j = 1;j<=8;j++){//控制列数
				System.out.print("*");
			}
			System.out.println();
		}
	}
}

【三角形】

//三角形
public class PracticeBk09{
	public static void main(String[] args){
		for(int i = 1;i<=4;i++){//控制行数
			for(int num = 1;num<=(4-i);num++){//控制空格数
				System.out.print(" ");
			}
			for(int j = 1;j<=(2*i-1);j++){//控制列数
				System.out.print("*");
			}
			System.out.println();
		}
	}
}

【菱形】

//菱形
public class PracticeBk10{
	public static void main(String[] args){
		for(int i = 1;i<=4;i++){//控制行数
			for(int num = 1;num<=(4-i);num++){//控制空格数
				System.out.print(" ");
			}
			for(int j = 1;j<=(2*i-1);j++){//控制列数
				System.out.print("*");
			}
			System.out.println();
		}
		for(int i = 1;i<=3;i++){//控制行数
			for(int num = 1;num<=i;num++){//控制空格数
				System.out.print(" ");
			}
			for(int j = 1;j<=(7-2*i);j++){//控制列数
				System.out.print("*");
			}
			System.out.println();
		}
	}
}

【空心菱形】

//空心菱形
public class PracticeBk11{
	public static void main(String[] args){
		for(int i = 1;i<=4;i++){//控制行数
			for(int num = 1;num<=(4-i);num++){//控制空格数
				System.out.print(" ");
			}
			for(int j = 1;j<=(2*i-1);j++){//控制列数
				if(j==1||j==(2*i-1)){
					System.out.print("*");
				}else{
					System.out.print(" ");
				}
			}
			System.out.println();
		}
		for(int i = 1;i<=3;i++){//控制行数
			for(int num = 1;num<=i;num++){//控制空格数
				System.out.print(" ");
			}
			for(int j = 1;j<=(7-2*i);j++){//控制列数
			if(j==1||j==(7-2*i)){
				System.out.print("*");
				}else{
					System.out.print(" ");
				}
			}
			System.out.println();
		}
	}
}

【三重循环】
练习:
百钱买百鸡:
公鸡5文钱一只,母鸡3文钱一只,小鸡3只一文钱,
用100文钱买一百只鸡,其中公鸡,母鸡,小鸡都必须要有,
问公鸡,母鸡,小鸡要买多少只刚好凑足100文钱。

public class PracticeBk12{
	public static void main(String[] args){
		//设x为公鸡个数,y为母鸡个数,z为小鸡个数,每只鸡需要至少买一个
		//所以公鸡最多的数量:(100-3-1)/5=19;母鸡最多的数量:(100-5-1)/3=31;小鸡必须是3只一起买,y=100-x-y
		for(int x = 1;x<=19;x++){
			for(int y = 1;y<=31;y++){
				int z=100-x-y;
				if((x+y+z==100)&&((5*x)+(3*y)+(z/3)==100)&&z%3==0){
					System.out.println("公鸡数量:"+x+"\t"+"\t"+"母鸡数量:"+y+"\t"+"小鸡数量:"+z);
				}
			}
		}
	}
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值