2_5、Java基本语法流程控制之循环结构

本文详细介绍了循环结构的基础概念,包括for循环、while循环和do-while循环的特点及应用场景,并通过实例展示了如何利用这些循环结构解决实际问题。

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

导语:

        循环结构:在某些条件满足的情况下,反复执行特定代码的功能。

        循环语句的四个组成部分:

                ①初始化部分(init_statement)

                ②循环条件部分(test_exp)

                ③循环体部分(body_statement)

                ④迭代部分(alter_statement)

        说明:通常情况下循环结束的原因是返回了false。

 

一、循环结构之:for 循环

1、for循环结构:


for(①;②;④){
            ③
        }
执行过程:①——②——③——④——②——③——④——...——②

经典例题:

        1.遍历100以内的所有偶数,记录所有偶数的和并记录所有偶数的个数

        int sum = 0;
		int count = 0;
		for(int i = 2;i<=100;i++){
			if(i%2 ==0){
				sum += i;
				count++;
				System.out.println(i);
			}
		}
		System.out.println("和为:" + sum);
		System.out.println("共有"+ count + "个偶数");
		

运行结果:


二、循环结构之:while 循环

1、while循环结构


while(②){
    ③
    ④
}
执行过程:①——②——③——④——②——③——④——...——②


说明:while循环一定要写迭代条件,如果不写迭代条件就有可能陷入死循环。

for循环和while循环总结:
        1.开发过程中一般使用for循环和while循环实现。
        2.while循环和for循环可以相互转化!
                区别:for循环和while循环初始化定义的变量的作用范围不一样。
        3.我们写循环,要避免出现死循环。

经典例题:遍历100以内的偶数

        int i=1;
		while(i<=100){
			if(i%2 == 0){
				System.out.print(i+" ");
			}
			i++;
		}

运行结果:

三、循环结构之:do-while 循环

1、do-while循环结构



do{
    ③;
    ④;
}while(②);

执行过程:——③——④——②——③——④——...——②

说明:

        ①do-while循环结构至少会执行一次③、④,俗称“先爽一次”
        ②开发中更多地使用for和while,较少使用do-while循环。

四、“无限循环”结构

 1、for(;;){

         }

2、while(true){

        }

总结:如何结束一个循环结构?
        1.循环结构中的循环条件返回false
        2.循环语句执行到break关键字。

五、嵌套循环

1、嵌套循环:

        当把循环结构A放在循环结构B的循环体中,那么形成嵌套循环。
                  内层循环:循环结构A
                  外层循环:循环结构B

2、说明:

        ①当内层循环遍历一遍时,外层循环循环体只循环了一次。
        ②如果外层循环需要循环m次,内层循环需要循环n次,那么内存循环的循环体需要循环m*n次。
        ③外层循环控制行数,内层循环控制列数!

六、break关键字与continue关键字

适用范围含义(不同点)相同点
breakswitch—case、循环结构结束当前循环关键字后不能声明语句
continue循环结构结束当次循环关键字后不能声明语句
		for(int i = 1;i<=10;i++){
			if(i%4==0){
				continue;//123567910
				//break;//123
				//System.out.println("*********");//错误: 无法访问的语句
			}
			System.out.print(i);
		}
		label:for(int i= 1;i<=4;i++){
			for(int j= 1;j<=10;j++){
				if(j%4==0){
					//break;//结束此关键字最近的一层循环
					//continue;

					//break label;//123
					continue label;//123123123123
				}
				System.out.print(j);
			}
			System.out.println();
		}

七、经典练习

1.控制台输出以下结果:

        ******
        ******
        ******
        ******

        for(int i = 1;i<=4;i++){
			for(int j = 1;j<=6;j++){
				System.out.print("*");
			}
			System.out.println();
		}

运行结果:

2. 控制台输出以下结果:

                           i(行号)          j(*的个数)
        *                    1                1
        **                   2                2
        ***                  3                3
        ****                 4                4
        *****               5                5
        

        for(int i=1;i<=5;i++){
			for(int j=1;j<=i;j++){
				System.out.print("*");
			}
			System.out.println();
		}

运行结果:

 

3.输入两个正整数m和n,求其最大公约数和最小公倍数。

        Scanner scan = new Scanner(System.in);
		
		System.out.print("请输入第一个正整数:");
		int m = scan.nextInt();
		System.out.print("请输入第二个正整数:");
		int n = scan.nextInt();
		//获取最大公约数
		//获取两个数中的最小值
		int min = (m<=n)?m:n;
		for(int i = min;i>=1;i--){
			if(m%i==0 && n%i==0){
				System.out.println(m+"和"+n+"的最大公约数为:"+i);
				break;//结束循环
			}
		}

		//获取最小公倍数
		//获取两个数中的最大值
		int max = (m>=n)?m:n;
		for(int i=max;i<=m*n;i++){
			if(i%m==0 && i%n==0){
				System.out.println(m+"和"+n+"的最小公倍数为:"+i);
				break;
			}
		}

运行结果:

4.从键盘读入个数不确定的整数,并判断读入的正数和负数的个数,输入为0时结束程序。

        Scanner scan = new Scanner(System.in);
		int positiveNumber = 0;
		int nagetiveNumber = 0;
		while(true){
			System.out.print("请输入整数:");
			int m = scan.nextInt();
			if(m>0){
				positiveNumber++;
			}else if(m<0){
				nagetiveNumber++;
			}else{
				break;
			}
			//System.out.println();
		}
		System.out.println("正数的个数为:"+positiveNumber);
		System.out.println("负数的个数为:"+nagetiveNumber);

 运行结果:

 5、九九乘法表

		for(int i = 1;i<=9;i++){
			for(int j=1;j<=i;j++){
				System.out.print(i+"*"+j+"="+i*j+" ");
			}
			System.out.println();
		}

运行结果:

 6、输出1000以内的质数。

        质数:是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。

		boolean isFlag = true;
		
		for(int i = 2;i<=1000;i++){
			for(int j = 2;j<i;j++){//优化可以让j<i/2   或者j<Math.sqrt(i)
				if(i%j == 0){
					isFlag = false;
					break;
				}
			}
			if(isFlag == true){
				System.out.println(i);
			}
			isFlag = true;
		}	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值