我们在学习循环嵌套之前,先练习几个例子来回顾 for 循环相关的知识点;
举例一:
甲/乙/丙/丁四人加工一批零件,共计 370 个,如果甲加工的零件数多 10 个,乙加工的零件数少 20 个,丙加工的零件数乘以 2 ,甲加工的零件数除以 2 ,四人加工的零件数就相等了。求甲乙丙丁分别加工了多少零件?
解题过程:在IDEA编译源代码的时候,控制器面板出现了一串乱码。
我将输入内容中的中文全部替换掉,发现可以正常输出;
输出内容带有中文时,控制台会报错,提示 不支持发行版本18 ;
IDEA调试:
本来以为就是简单的小问题,最多二十分钟就解决了,于是上网搜了大量的视频。一个早晨过去了,一个晚上过去了,除去上课经历了一天,在第二天的晚上我才最终把这个玩意儿弄好。
我就直接说解决办法了。
打开IDEAR——file——settings——搜索:Java Compiler,
把这两项改为 8 ,点击 ok ,就可以了。
如果实在不行的话,我不确定是不是我的 JDK 是不是换成了 17 版本的问题,因为在一开始我以为是 JDK 18及以上版本的问题,就把 22 版本换成了 17 版本;
于是,得到了 甲,乙丙丁
代码优化:
当我们写完代码后,不要急着“高兴”。我们还得思考思考,代码还需要哪些改进的地方。例如:
代码是否 规范(缩进 命名 注释) 是否具有 健壮性(逻辑严谨性);
是否可以 优化(效率 冗余 结构);
因此,我通过粗略计算缩短了 for 循环的范围,提高了程序的运行效率;
举例二:
水仙花数:通过循环找到三位数的水仙花数:
153——>1 5 3 ; 1*1*1 + 5*5*5 + 3*3*3 == 153 ;
(1)
class Flower { public static void main(String[] args) { for (int a = 1; a <= 9; a++) { for (int b = 0; b <= 9; b++) { for (int c = 0; c <= 9; c++) { if (a * a * a + b * b * b + c * c * c == (a * 100 + b * 10 + c)) { System.out.println("abc=" + a + b + c); } } } } } }
(2)
当然也可以利用一个循环解决问题:
(3)
当然我们也可以使用 Math.power(double a,double b) , a 表示值,后面的数字表示 a 的几次方;
(4)
当然,也可以这样(狗头):
三。循环嵌套
我们首先根据 控制台输出星星 来观察循环嵌套的作用:
(1)
控制台输入一行 **** 的源代码 :
(2)
由于其不能灵活按照需求进行输出,我们做如下改进:
(3)
我们改变要求: 输出四行,每行星星数按照要求进行输出:
(4)双层循环
我们继续要求 行数,列数 按照我们的要求随意输出:
(5)
我们要求其输出按照直角三角形输出,并且每层星星数从 1 递增;
(6)
我们要求他们以靠右边的形状输出,并且固定行数:
再将符号换为空格即可;
至于按照需求控制行数的“版本”需要大家自己尝试了。
总结:
写完之后的感觉是,在学习过程中要学会举一反三,联想到类似的题目以及题目的“升级版”,思考他们之间的关联。