首先,对不起我的英语。实际上,我正在尝试使用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前面的数字出现在此处。只是令人沮丧的开始编写代码,然后不知所措,我现在正在考虑这不适合我,因为我对这段代码一无所知。再次抱歉,如果这篇文章是愚蠢的问题,家伙。
我认为您对数组的概念不太清楚。让我们通过现实的例子来理解这一点:
一维数组:
假设我们将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++;
}
}
希望有帮助。
也有许多在线资源可供您使用。
您正在将k
分配给2D数组的[i] [j]元素。
由于k
在任何循环外声明,因此它从0变为(i*j - 1)
-0..19。
所以您有索引i=0,1,2,3
和j=0,1,2,3,4
,但值k
为0,1,2...19
起初,我建议您始终为每个循环和“ if”语句添加大括号。如果您不这样做,则循环将只在其下面的一行代码中运行。即使您了解循环的工作原理,也总是会忘记它,因此将来还会有更多问题。
每次循环使用变量k
的循环时,都会增加[j
。
j
被迭代5次,但在上循环中被终止4次。因此4x5 = 20,所以您有20个数字(从0到19)。