为了账号安全,请及时绑定邮箱和手机立即绑定

for 循环如何遍历数组?

for 循环如何遍历数组?

红颜莎娜 2021-09-29 17:22:36
我试图理解 for 循环如何实际遍历数组背后的逻辑。以这个例子为例,我将在其中使用 Java:int[] numbers = {5, 6, 7};for(int i = 0; i < number.length; i++) {    System.out.println(numbers[i]);}我不明白打印如何numbers[i]在数组中循环。更具体地说,我不明白如何i表示数组的内容。
查看完整描述

3 回答

?
长风秋雁

TA贡献1757条经验 获得超7个赞

我将使用稍微不同的类比,因为很多答案都为您提供了正确的信息。

数组只是一个包含值的连续框列表。想象一下这是一个房屋列表,每个房屋编号从 0(Java 中的数组像许多其他编程语言一样从 0 开始,而不是 1)到n(在您的情况下是 2)。

因此,如果您是从每所房子收集捐款的人,您将从第一所房子 0 开始,然后进行到下一个房子 1,然后到下一个房子 2。您将跟踪您现在正在访问的房子,以便您还知道下一个是哪个,这就是整数变量i正在做的事情。

打印numbers[i]不会形成循环,就像敲第一间房子并不意味着你要敲第二间房子一样。

for循环会跟踪您接下来需要访问的门牌号。它通过它在同一行中的 3 个语句来完成:

for(int i = 0; i < number.length; i++)

第一个语句是说从第一个房子 ( int i = 0) 开始。你可以从你喜欢的任何地方开始。

第二个语句是说,无论有多少房子,你都想上到最后一个房子。( i < number.length). 这字面意思是只要i小于数组的大小保持循环。您可能会问为什么不是 condition <=。这是因为我们从0开始,所以长度(数组的大小)将是最后一个房子的数字+1。在你的情况下,length = 2 + 1.

第三个陈述,是什么让你搬到下一个房子。i++是说的简写i = i + 1。该语句在循环的每次迭代之后发生。

所以基本上你的 for 循环首先将 i 初始化为 0,检查条件(第二个语句),如果条件满足,则进行第一次迭代,然后它最终递增i,如果仍然满足第二个条件,则开始另一次迭代。重复此循环,直到for表达式的第二个语句不再为真。

最后所有的numbers[i]方法是,由于numbers是一个数组,[ ]操作符访问指定索引处的值。所以这就像用数字敲敲房子,i看看谁住在那里。输入值以System.out.println()在屏幕上打印该值。


查看完整回答
反对 回复 2021-09-29
?
FFIVE

TA贡献1797条经验 获得超6个赞

以下是 for 循环执行方式的细分(源自此认证学习指南)


名称如下:


for(initialization code; 

    boolean expression; 

    update statements){

  body

}. 

for 循环的部分按以下顺序执行:

  1. 初始化代码

  2. 如果布尔表达式为真,则执行主体,否则退出循环

  3. 身体执行

  4. 执行更新语句

  5. 返回第 2 步

因此,当应用于您的示例时,我们可以说:

运行初始化:

int i = 0

迭代 1:

if(i < number.length) // -> if(0 < 3)

//run body

i++ //i becomes 1

//return to step 2 (new iteration)

迭代 2:


if(i < number.length) // -> if(1 < 3) //i was incremented to 1

//run body

i++ //i becomes 2

//return to step 2 (new iteration)

迭代 3:


if(i < number.length) // -> if(2 < 3) //i was incremented to 2

//run body

i++ //i becomes 3

迭代 4(未运行):


//return to step 2 (new iteration)

if(i < number.length) // -> if(3 < 3)  -> condition not met

//condition not met, stop the loop

更具体地说,我不明白我是如何表示数组的内容的


正如您在上面看到的,每次循环体执行完毕时,都会执行更新语句,这会使i变量递增,从而允许访问数组的不同索引。


这样做是明智的,如果您将更新语句更改为i += 2,则将跳过数组的某些索引。


查看完整回答
反对 回复 2021-09-29
?
慕森卡

TA贡献1806条经验 获得超8个赞

数组的值由语法取出


numbers[index];

数组索引从 0 开始,然后是 1 下一个 2 .... 所以为了检索你需要的第一个元素


numbers[0];

同时在 for 循环中,您创建了一个名为i. 请注意,在迭代时,由于 , 的值i增加了 1 i++。


所以在你的 for 循环中会发生这种情况。


numbers [0];

numbers[1];

numbers[2];

我想你不明白的是for循环是如何工作的。请阅读,


Java 中的 For 循环示例

根据那篇文章,


for(initialization; condition ; increment/decrement){

   statement(s);

}

//img1.sycdn.imooc.com//6154309f00017ffa03990397.jpg

示例(这不是 Java,它是 JavaScript,但 for 循环的工作方式相同;javascript 不是 爪哇不要误会。我只想向您展示一个关于i价值如何增加的工作示例。):


var i;

for (i = 0; i < 10; i++) {

  console.log("i = " + i);

}


查看完整回答
反对 回复 2021-09-29
  • 3 回答
  • 0 关注
  • 241 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信