从零开始学Java【10】

从零开始学Java【10】


​ 学习视频:https://www.bilibili.com/video/BV12J41137hu?p=43

增强for循环

image-20220427165827819

这里的要求是先做个简单的了解,后面学数组的时候再详细讲,先跟着敲代码

直接上代码

image-20220427170502619

第二种for就是增强数组

break和continue

image-20220427170706700

  • break用于退出整个循环

image-20220427171422172

break强制退出for循环,不再执行循环中剩余的语句,然后程序继续往下运行

  • continue用于跳出单次循环,而继续执行循环剩余语句

image-20220427172132455

程序中while循环让i累加,并且输出i,在中间加个if语句,当i是10的倍数的时候,换行并且执行continue,即结束当前单次循环,然后继续下一次循环。

goto关键字

Java中没有goto关键字,取而代之的是outer,这部分不需要掌握,了解一下就行

image-20220427174357362

i为要挑选的数,j为要挑选的数的因数,把要挑选的数再和因数取模,看看是否整除,如果不能整除,则是要找的质数,然后输出整个质数,然后继续下一个,如果不能整除,则执行if里面的语句:continue outer,意思为终结本次循环,然后由第二个for循环的outer那里,跳转到第一个for循环那里,像任意门一样到外面,然后继续执行第一个for循环。

所以outer的作用就是从outer标签,跳转到outer:标签

这部分内容不在学习范围之内,只是在Java里面有这么一种标签的用法。

以上就是全部知识内容,接下来是练习题。

打印三角形

思路:

image-20220427200324551

首先打印出1部分,再打印出2部分,然后最后打印出3部分

打印第一部分

image-20220427191522901

其中:i代表的是行数,总共是五行。j代表的是每一行中打印的东西个数,比如第一行打印5个,第二行打印4个,以此类推。当内嵌循环执行完之后,执行换行操作System.out.println();

分析需求:(i为行数)

i=1时,输出5个

i=2时,输出4个

i=3时,输出3个

i=4时,输出2个

i=5时,输出1个

所以可以初步推出,该for循环是j为递减的一个循环,所以可以令j初始值为5,通过比较i,来输出个数

(判断布尔式:j ? i)

i=1时,j=5,输出5个

i=2时,j=4,输出4个

i=3时,j=3,输出3个

i=4时,j=2,输出2个

i=5时,j=1,输出1个

找到i和j的关系,可以知道,是:j >= i。

所以第一部分代码如下:

for (int j = 5; j >= i; j--)//第一部分

打印第二部分

那么,把上面那些”*“全部替换成空白,因为我们要打印出三角形,现在开始打印第二部分

image-20220427195139036

分析需求:(i为行数)

i=1时,输出1个

i=2时,输出2个

i=3时,输出3个

i=4时,输出4个

i=5时,输出5个

所以可以初步推出,该for循环是j为递增的一个循环,所以可以令j初始值为1,通过比较i,来输出个数

(判断布尔式:j ? i)

i=1时,j=1,输出1个

i=2时,j=2,输出2个

i=3时,j=3,输出3个

i=4时,j=4,输出4个

i=5时,j=5,输出5个

找到i和j的关系,可以知道,是:j <= i。

所以第二部分代码如下:

for (int j = 1; j <= i; j++)//第二部分

另:观察可得,两个第一部分收尾相连可以组成一个长方形,所以第一部分和第二部分代码刚好相反:

for (int j = 5; j >= i; j--)//第一部分
for (int j = 1; j <= i; j++)//第二部分

打印第三部分

image-20220427200025284

第三部分为:

分析需求:

i=1时,不输出

i=2时,输出1个

i=3时,输出2个

i=4时,输出3个

i=5时,输出4个

所以可以初步推出,该for循环是j为递增的一个循环,所以可以令j初始值为0,通过比较i,来输出个数

(判断布尔式:j ? i)

i=1时,j=0,输出0个

i=2时,j=1,输出1个

i=3时,j=2,输出2个

i=4时,j=3,输出3个

i=5时,j=4,输出4个

找到i和j的关系,可以知道,是:j < i。

所以第三部分代码如下:

for (int j = 1; j < i; j++)

总结解体顺序:

①首先确定大循环,这里的大循环是i,i循环五次,即有五行。

②确定每一行输出的东西。这一步就要分成好几步来完成了,这里对三角形分成三大块

image-20220427203008883

通过分别对三块东西来进行设计,从而输出整个三角形,分析如下:

  1. 列出对应行数以及对应需求,比如第三部分中,在第一行时:i=1时,不输出...以此类推
  2. 通过观察输出的个数变化,来求得j是自增还是自减。比如第三部分中,输出个数由0到5,可以推出j的变化是自增的
  3. 通过比较i和输出个数(其实输出个数就是j的值),来确定最终的布尔判定式。比如第三部分中,通过找到i和j的关系,从而确定了j和i总是缺1位,所以是用小于号。

参考文档:https://www.runoob.com/w3cnote/java-print-the-triangle.html


Debug

其实以上的程序很难懂,还有一种方法,那就是打断点。

image-20220427203936801

在此处打断点,找到小虫子符号,运行debug:

image-20220427204307746

image-20220427204832581

那么程序就会像这样卡住,只需要按上面的箭头,就会一步步进行

image-20220427204457650

image-20220427204506572

在输出这里也能看到一步步的结果

posted @ 2022-04-27 20:54  机智的小柴胡  阅读(25)  评论(0)    收藏  举报