JavaBase03 - 循环

循环

如果要重复执行某些代码时,使用循环语句。

while

while(循环条件){//小括号中的条件结果为boolean值
满足循环条件时重复执行的代码
}

执行流程 先执行小括号中的内容,如果结果为true,执行大括号中的内容,再循环执行小括号中的内容,判断如 果为false则停止循环。

while循环有可能一次都不执行。

do-while

do{
满足循环条件时重复执行的代码
}while(循环条件);

执行流程 先执行一次do大括号中的内容,再判断while小括号中的内容,如果成立,再次执行do大括号中的内 容,如果不成立,停止循环。

do-while循环至少执行一次

while和do-while的区别

while循环可能一次都不执行,do-while循环至少会执行一次

for

//表达式1为定义循环变量
//表达式2为判断循环条件
//表达式3为更新循环变量
for(表达式1;表达式2;表达式3){
循环体
}

执行流程 首先执行表达式1,再执行表达式2,如果表达式2的结果为true,执行循环体,再执行表达式3,再执行 表达式2判断,如果表达式2的结果为false,结束循环

for循环特殊情况

//for循环特殊情况
//可以使用外部定义的循环变量
int i = 0;
for (;i<=10;i += 2) {
System.out.println(i);
}
//可以在循环体重更新循环变量
int i = 0;
for (;i<=10;) {
System.out.println(i);
i += 2;
}
//两个分号必不可少,如果都不写表达式,是一个死循环
int i = 0;
for (; ; ) {
if (i > 10) {
break;
}
System.out.println(i);
i += 2;
}

循环控制

break和return

  • 所有的循环都可以使用break和return停止循环。

  • break是停止循环后,继续执行循环之外的内容。

  • return是结束方法,不再执行return之后的内容。

continue

在循环语句中,使用continue,可以停止本次循环,不再执行continue之后的代码,直接进行下一次循环。

循环总结

  • 如果已知循环次数,推荐使用for循环。如遍历数组、集合等。

  • 如果未知循环次数,推荐使用while循环。 while循环和for循环可以相互转换

  • do-while循环至少执行一次,for循环和while循环有可能一次都不执行

循环嵌套

如果一个重复的过程还需要将其整体重复执行时,可以使用循环嵌套。

如循环判断密码是否输入正确,正确后循环打印功能菜单。

循环嵌套就是循环一个循环。

//用*打印矩形
//将循环一行这件事再循环5次
for (int n = 1; n <= 5; n++) {
//循环打印一行
for (int i = 1; i <= 10; i++) {
System.out.print("*");
}
System.out.println();
}

穷举法

将所有可能的情况一一列举出来

//鸡兔同笼 笼子里有若干鸡和兔,头一共35,腿一共94,鸡兔各几只?
for (int ji = 0; ji <= 35; ji++) {
	for (int tu = 0; tu <= 35; tu++) {
		if (ji + tu == 35 && 2 * ji + 4 * tu == 94) {
			System.out.println("鸡:" + ji + "兔:" + tu);
		}
	}
}
//百元买百蛋 花够100元买够100个蛋 鸡蛋3个1元 鸭蛋1个3元 鹅蛋1个5元
for (int jd = 0; jd <= 100; jd++) {
	for (int yd = 0; yd <= 100; yd++) {
		for (int ed = 0; ed <= 100; ed++) {
			//整数间相除为整数,这里鸡蛋的价格需要用浮点数表示
			if (jd + ed + yd == 100 && 3 * yd + 5 * ed + jd / 3.0 == 100){
				System.out.println("鸡蛋:" + jd + "鸭蛋:" + yd + "鹅蛋:" + ed);
			}
		}
	}
}

打印99乘法表

/**
         * 99乘法表
         */
        for (int i = 1; i <= 9; i++) {
            for (int j = 1; j <= i; j++) {
                System.out.print(j + "*" + i + "=" + i * j + "\t");
            }
            System.out.print("\n");
        }

在这里插入图片描述

作业

计算1!+2!+…+10!

		/**
         * 1!+2!+3!++++10!==?
         */
        int sum = 0;//最终
        for (int i = 1; i <= 10; i++) {
            int sum1 = 1;//阶乘
            for (int j = 1; j <= i; j++) {
                sum1*=j;//
            }
            System.out.println(i+"的阶乘:"+sum1);
            sum+=sum1;
        }
        System.out.println(sum);

在这里插入图片描述

猴子吃桃。假如一只猴子第一天摘了若干桃子,吃了一半多一个,第二天继续吃了剩下的一半多一 个。。。到第十天吃了最后一个。第一天摘了几个?

        int peach =1;//最后的桃子
        for (int i = 9; i > 0; i--) {
            peach=(peach+1)*2;
            System.out.println("第"+ i +"天,有"+ peach +"桃子");
        }
        System.out.println("共有:"+peach);

在这里插入图片描述

打印1-10000以内的完数。完数:如果一个数的非自身因子和等于它本身,这个数称为完数。 如6的因子1+2+3=6,所以称6是一个完数 如28的因子1+2+4+7+14=28,所以称28是一个完数

        for (int i = 1; i < 10000; i++) {
            int sum = 0;
            for (int j = 1; j < i; j++) {
                if (i%j==0)sum+=j;
            }
            if (sum==i){
                System.out.print(i+" ");
            }
        }

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值