为什么此for循环显示4和5之前的数字?

问题描述 投票:1回答:3

首先,对不起我的英语。实际上,我正在尝试使用Java迈出第一步,正在阅读Java:《完全参考》,我陷入了多维数组的困境。现在,我想我可能会理解这个概念,但是我的问题出在本书显示的代码中。

public class TwoDArray {
    public static void main(String[]args) {
        int twoD [] [] = new int [4] [5];
        int i, j, k = 0;
        for(i=0; i<4; i++)
            for (j=0; j<5; j++) {
                twoD [i] [j] = k;
                k++;
            }
        for(i=0; i<4; i++) {
            for(j=0; j<5; j++)
                System.out.print(twoD [i] [j] + " ");
            System.out.println();
        }
    }
}

输出是这样:

0 1 2 3 45 6 7 8 910 11 12 13 1415 16 17 18 19

为什么?抱歉,也许我没有弄清楚这个概念,但是如果我没弄错,那么foor循环将i和j的语句从0开始,该语句定义了条件,第三个语句再加上1,所以我不明白为什么4和5前面的数字出现在此处。只是令人沮丧的开始编写代码,然后不知所措,我现在正在考虑这不适合我,因为我对这段代码一无所知。再次抱歉,如果这篇文章是愚蠢的问题,家伙。

java arrays multidimensional-array
3个回答
1
投票

我认为您对数组的概念不太清楚。让我们通过现实的例子来理解这一点:

一维数组:

假设我们将7个编号从11到17的球放入从0到6的框中。如下所示:

[[11,12,13,14,14,15,16,17]-球的大小

<< 0、1、2、3、4、5、6>-盒子上的数字

这是Java或任何编程语言的一维数组。

以上代码:

int[] arrayOfBoxes = new int[7];
int valueOnTheBall = 11;
for (int numberOnTheBox=0; numberOnTheBox<7; numberOnTheBox++) 
{
  arrayOfBoxes[numberOnTheBox] = valueOnTheBall;
  valueOnTheBall++;
}

2D数组:

现在让我们假设我们将这些球放置在5X4的2D矩阵中。

像下面一样:

[[11,12,13,14,14,15]

<00,01,02,03,04>

[[16,17,18,19,20]

<10,11,12,13,14>

[[21,22,23,24,25]

<20,21,22,23,24>

[[26,27,28,29,30]

<30,31,32,33,34>

您可以将其视为ArrayofArrays,有4个数组,每个数组的大小为5。

特别注意方式,索引已在此处完成。

以上代码:

int arrayNumber;
int indexOfEachArray;

int[][] arrayMatrix = new int[4][5];

int sizeOfTheBall = 11;

for(arrayNumber = 0; arrayNumber < 4; arrayNumber++) 
{
    for(indexOfEachArray=0; indexOfEachArray < 5; indexOfEachArray++)
     {
         arrayMatrix [arrayNumber][indexOfEachArray] = sizeOfTheBall;
          sizeOfTheBall++;
      }
}

希望有帮助。

也有许多在线资源可供您使用。


0
投票

您正在将k分配给2D数组的[i] [j]元素。

由于k在任何循环外声明,因此它从0变为(i*j - 1)-0..19。

所以您有索引i=0,1,2,3j=0,1,2,3,4,但值k0,1,2...19


0
投票

起初,我建议您始终为每个循环和“ if”语句添加大括号。如果您不这样做,则循环将只在其下面的一行代码中运行。即使您了解循环的工作原理,也总是会忘记它,因此将来还会有更多问题。

每次循环使用变量k的循环时,都会增加[j

j被迭代5次,但在上循环中被终止4次。因此4x5 = 20,所以您有20个数字(从0到19)。

© www.soinside.com 2019 - 2024. All rights reserved.