07 流程控制 03嵌套循环
嵌套循环
用法,定义:在一个循环结构里面,内部有嵌套了另一个循环结构,就形成了嵌套循环, 在之前三种循环(for , while,do-while)基本结构都可以实现嵌套循环,还可以交叉使用。
本质:1.内层循环充当了外层循环中的循环体内容,
2.当内层循环的循环条件为false时才会跳出内层循环,执行外层循环,
3.只有当外层循环结构中的循环条件为false时,才会结束整个嵌套循环
4.在嵌套循环结构中的循环总次数 = 内层循环次数 * 外层循环的次数
解题思路:
1.看清楚内外循环分清有几个变量找到切入点。
2.首要的是先确定外层循环 确定外层循环的变量。
3.循环次数是已知的,确定的,建议使用for循环。
题:
题:球从100米的高度自由落下,每次落地后反跳原高度的2/3再落下 求它在第10次落地时,共经过多少米?第10次反弹多高? double downHeight = 100;//初试落下高度 第一次 double coefficient = 2.0 / 3.0;// 弹起高度系数 double upHeight = 100 * coefficient;// 初始弹起高度 第一次 double length = downHeight + upHeight; // 初始经过的米数 第一次 //循环次数 for (int i = 2 ; i <= 10; i++){ //循环体代码 //落下的高度 = 上一次弹起的高度 downHeight = upHeight;// 66.666 66.6666 //计算弹起的高度 upHeight = downHeight * coefficient; //每次弹起之后的经过的长度 最后一次弹起的高度不计算 length = length + downHeight + upHeight;//经过的长度 } //输出第10次落地式经过的长度 System.out.println("第十次落地时经过的长度:"+ (length - upHeight)+"米"); System.out.println("第十次落地时经过的长度:" + upHeight +"米");
题:给20块钱买可乐,每瓶可乐3块钱,喝完之后退瓶子可以换回1块钱,问最多可以喝到多少瓶可乐。 int money = 20;//购买可乐钱 循环变量是money int price = 3 ;//可乐价钱 int sum = 0 ;//购买可乐的瓶数累加和 int change = 0 ;//零钱 int num = 0;// 每次都买的瓶数 //可以用for while do-while; //通常使用for循环的时候,循环次数是确定的,不确定一般很少用,或者余姚参与循环的变量的长度是确定的(及最大值最小值知道的) //不确定次数,不确定长度 ,我们就使用while / do-while循环 //通常循环的结构是包含四部分:循环变量的迭代部分,灵活变化的 循环条件表达式和循环变量紧密结合的, while( money >= price){//2.循环条件部分 //3.循环体代码 num = money / price;//瓶数 change = money % price;//零钱 sum = sum + num ;//没次瓶数累加和
题:个位数不为8的整数的累加值 int sum = 0; for(int i = 1;i <= 100; i++){ //限制条件:个位数不能为8 if (i % 10 != 8){ sum = sum +i; } } // 输出1-100以内的和 System.out.println("1-100以内的尾数不为8的整数的和为:"+ sum);//4520
题: 求一下前100项所有是7包含7的倍数所有的整数的和 整数 % 7 ==0 int sum = 0; // for (int i = 1 ; i <= 100 ; i++){ //限制条件 if (i % 7 == 0){ sum = sum + i; } }
题: 正立的等腰三角形 int line = 7; //行数为7 for (int i = 1; i <= line ; i++){// i 行数 外层循环的变量 //内层循环 分成两部分: 空白 + * //空白部分 空格代替 for (int j = 1; j < line - i +1 ; j++ ){// j 空白 内层循环变量 // 输出空白部分 System.out.print(" ");//只输出空格不换行 } // *的部分 *代替 for(int k = 1; k <= 2 * i - 1; k++){ //输出 * 的部分 System.out.print("*");//只输出*不换行 } //当前面所有的信息输出完毕,此时换行 System.out.println();//换行不输出 }
//输出前100项的7的倍数正整数的和 System.out.println("前100项的7的倍数正整数的和为:"+ sum);
// 4.迭代部分 money = num + change;//购买可乐的钱
}