‫好吧, 我会的
‫现在, 您已经了解了如何使用数组和二维数组以及for循环, 下面我们将结合这些概念,
‫在一个视频和一个示例中结合这些概念, 同时我们还将了解嵌套for循环｡
‫在本视频中, 我们将介绍这些不同的功能, 然后了解何时使用嵌套的for循环,
‫以及嵌套的for循环相对于for each循环的优势, 例如,
‫在多维数组方面｡
‫好吧, 那我们开始吧｡
‫首先, 你们可以看到,
‫我有一个二维矩阵, 每个维有三个元素, 也就是三行三列.
‫所以我将使用for each循环, 通过使用for each关键字, 这里是this one和tab｡
‫这将允许我快速输入它是什么类型, 我想如何调用我正在迭代的集合中的项,
‫以及集合名｡
‫所以如果你想变得更快的编码, 这是一个巧妙的小技巧｡
‫所以这个元素的类型是integer, 因为我们要遍历这个矩阵, 这个矩阵里有一堆整数,
‫我们可以称它为item, 我们可以称它为num, 因为它是一个数字, 我们可以称它为element.
‫这将是您在这里看到的正常名称, 但项目目前是好的｡
‫然后我要迭代的集合就是我在这里准备的矩阵｡
‫这也是为什么我需要把这个矩阵变成静态的, 因为我在我的静态main方法中使用它.
‫通常, 您不能在静态main方法或静态方法内部使用非静态项或变量｡
‫为了向前迭代for each循环并显示矩阵项,
‫我们可以在这里使用控制台右行语句｡
‫所以请看双制表符, 这里我只想说显示项目, 然后留下一个空白｡
‫或者创造一个空的空间, 实际上我们不要用红线, 而是右边｡
‫所以这只会把它写在一行中, 而不会一直创建一个新行｡
‫现在, 让我们真实的地运行这个｡
‫我们会看到一, 二, 三, 四, 五, 六, 七, 八, 九.
‫因此, 矩阵中的所有项目都将显示｡
‫所以我们用这个for each循环来遍历矩阵中的每一项, 它从左到右,
‫也就是说, 在我们的例子中｡
‫好吧, 我会的
‫所以对每个循环都是一个强大的工具｡
‫它允许我们遍历一个集合, 一个二维矩阵, 一个三维矩阵, 不管你想要多少维｡
‫所有这些最终都是集合, 因为这里我们使用了数组数组是集合的一种类型, 这就是我们需要给予for
‫each循环迭代的内容.
‫所以它遍历集合矩阵｡
‫现在我们可以继续使用它来演示如何使用嵌套的for循环来实现这一点｡
‫所以, 如果你只想遍历其中的每一项, for each循环是非常有用的,
‫但是在某些情况下, 它有一定的缺点｡
‫因此, 如果您现在想更改该项目, 则无法进行更改, 因为它受到保护｡
‫因此, 您不能继续说item现在应该用3覆盖, 例如｡
‫就像你在这里看到的｡
‫所以如果你试着这样做, 它会说不能赋值给item, 因为它是一个for each iteration变量｡
‫所以它不是实际的物品, 可以说, 它实际上只是价值存储｡
‫因此, 我们存储我们目前从我们的收藏中看到的任何价值, 以及我们在这里存储的东西, 它的价值｡
‫所以在第一次迭代中, 它是1｡
‫在第二次迭代中它是2, 但它从来不是值本身, 它只是一个对值的引用｡
‫所以这对我们没什么帮助｡
‫所以如果我们想真正调整它, 我们需要一个嵌套的for循环｡
‫现在, 让我们继续创建一个next for循环｡
‫我将在这里添加一个小的亮线语句, 说明这是使用嵌套的for循环打印数组｡
‫那么什么是嵌套for循环呢？
‫基本上就是一个for循环里面还有一个for循环.
‫好吧, 我会的
‫这里我们用四次, 然后再用双击｡
‫所以我们从零到长度｡
‫所以这里我们需要输入迭代的长度｡
‫我现在要做的就是用我的矩阵, 当然我也可以用长度,
‫这样就给予了整个矩阵的长度.
‫基本上就是矩阵中的项数, 但这不是我想要的｡
‫我想遍历每个维度, 所以我想一行一行, 一列一列地遍历｡
‫所以第一维是行｡
‫所以我可以用数组提供的方法｡
‫所以数组类有一个get length方法, 我需要在这里传递维数.
‫这会得到一个数字, 或者你们可以看到, 它代表了数组中, 指定维度的元素个数｡
‫所以在我的例子中, 如果我输入零, 这将返回零维, 这基本上意味着行｡
‫这样就可以给予行了｡
‫所以如果我想遍历每一列, 我需要在这里使用另一个for循环.
‫这是我的内部for循环, 就像内部or循环一样｡
‫还有外面的这个｡
‫这将是for循环的外层｡
‫好吧, 我会的
‫是这样｡
‫当然, 我们现在需要更改的是迭代变量名｡
‫所以这里我们用J代替I｡
‫这是一种常见的做法｡
‫所以如果你有一个内部for循环, 你通常在这里用J作为计数器变量名｡
‫但现在我们要比较的不是第一维的长度, 而是第二维的长度｡
‫所以我们在这里输入一个｡
‫这样我就可以浏览每一列了｡
‫所以这个for循环作业将遍历各个列, 这个for循环作业将遍历, 整个作业将遍历各个行.
‫所以这意味着我们现在可以继续了｡
‫在这里做我们该做的陈述｡
‫当然, 我们这里没有任何物品｡
‫我们有什么发现？
‫我们有一个矩阵, 我们在这里创建的静态变量｡
‫但是这个矩阵, 它需要知道它应该显示哪些项｡
‫所以我说只显示I, j, 也就是显示F｡
‫行在J｡ F､ 列, 这基本上意味着在第一次迭代中, I将为零｡
‫然后我们从这个for循环开始, 这四个循环会一直循环下去, 直到完成,
‫然后它只会进入外层for循环的下一次迭代｡
‫所以只有这样我才会加1｡
‫这意味着I会一直保持为零, 直到我们完成了for循环, 也就是说我们从零开始, I,
‫然后在第一次迭代中, J也是零.
‫所以我们得到第一个条目, 然后我们有J是1, 因为我们增加了, 一旦我们运行了这行代码,
‫我们增加了1｡
‫所以现在J是1, 我们说01｡
‫所以我们矩阵的位置01是这里的2, 那么J是2, 也就是3｡
‫然后我们检查是｡
‫2加1, 这是很好的, 迭代后增加的j比我们看到的当前维的长度少3｡
‫维度是列维度｡
‫那么我们有多少列？
‫在本例中, 我们有三列｡
‫所以三个不少于三个, 这就是为什么这个后续行动将与它的执行｡
‫我们再次回到外层for循环｡
‫所以这次我们增加增量i｡
‫一个, 也就是说我现在是一个｡
‫然后我们再循环三次｡
‫所以在这个内部for循环的第一次迭代中, I是1, J是0｡
‫然后是一, 然后是两｡
‫所以它基本上会经过这个项目, 然后这个项目, 然后这个项目, 每次它都会把它写到控制台上,
‫留下一个空白｡
‫然后在for循环的第三次迭代中, 或者说在循环外, 它会遍历最后一行.
‫这是一个嵌套的for｡
‫循环｡
‫好吧, 我会的
‫让我们快速运行一下, 看看它是否真真实的能达到我所说的效果｡
‫你可以看到这里｡
‫也许我应该稍微改一下印刷方式｡
‫给你
‫我要再断线一次｡
‫喜欢｡
‫我们再来一次｡
‫你看, 这是我们用嵌套的for循环打印出来的二维数组｡
‫这是这一个｡
‫这一个是for each循环｡
‫在这一点上, 你可能会说, 嘿, 有什么好处, 丹尼斯？
‫这有道理吗？
‫我不喜欢你在那里做的事｡
‫我更喜欢使用for each循环｡
‫你看, 这是超级简单的, 非常小的一点代码, 我需要｡
‫最酷的是, 我可以直接访问我当前正在查看的项目｡
‫所以在这个例子中, 我只是在迭代｡
‫但是如果我继续给它赋一个新值呢？
‫假设我给它赋值0｡
‫如果你运行这个程序, 我们会得到一堆0｡
‫在这里, 你看到0000｡
‫所以现在我可以创建一个逻辑, 例如, 用它来覆盖值, 这是不容易实现的,
‫它为每个循环｡
‫对于每个循环都是超级棒的｡
‫您只需要为每个项显示一些内容并运行一些代码,
‫而不是专门更改项本身, 因为项只是我们在中所拥有的任何值的短期存储位置｡
‫集合, 这对于嵌套循环来说是不同的, 这已经是你在这里看到的一个优点了.
‫但还有其他的优势｡
‫我们将通过这个特殊的例子来看看更多嵌套for循环的例子｡
‫我们会在下一个视频中稍微调整一下,
‫比如, 看看如何从for循环中得到偶数或奇数, 然后看看如何调整它, 比如, 只打印对角线元素.
‫因为这会给予你大致了解什么可以用for循环for或者嵌套for, 循环for｡
‫基本上, 你在编程方面有很大的自由度, 我只是想给予你一些你可以使用的工具｡
‫现在, 我们来看下一个视频, 我们将在那里看到这一点｡