Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么这个for循环在4和5之前显示数字?_Java_Arrays_Multidimensional Array - Fatal编程技术网

Java 为什么这个for循环在4和5之前显示数字?

Java 为什么这个for循环在4和5之前显示数字?,java,arrays,multidimensional-array,Java,Arrays,Multidimensional Array,首先为我的英语感到抱歉。实际上,我正在尝试用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<

首先为我的英语感到抱歉。实际上,我正在尝试用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();
        }
    }
}
公共类TwoDArray{
公共静态void main(字符串[]args){
int-twoD[][]=新int[4][5];
int i,j,k=0;

对于(i=0;i您正在将
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”添加花括号语句。如果不这样做,循环将只在它下面的一个代码行上运行。即使您了解它是如何工作的,您也可能会忘记它,并因此在将来遇到更多问题

每次迭代带有变量
j
的循环时,
k
都会增加


j
被迭代了5次,但它在上面的循环中被4次删除。所以4x5=20,所以你有20个从0到19的数字。

我想你对数组的概念不是很清楚。 让我们了解现实生活中的例子:

1D阵列:

假设我们将7个编号为11到17的球放在编号为0到6的盒子中。 如下图所示:

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

--盒子上的数字

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

以上代码:

int[] arrayOfBoxes = new int[7];
int valueOnTheBall = 11;
for (int numberOnTheBox=0; numberOnTheBox<7; numberOnTheBox++) 
{
  arrayOfBoxes[numberOnTheBox] = valueOnTheBall;
  valueOnTheBall++;
}
int[]数组框=新的int[7];
int-valueOnTheBall=11;

对于(int numberOnTheBox=0;numberOnTheBox add
System.out.println(“i=“+i+”,j=“+j+”,k=“+k”);
twoD[i][j]=k之前的一行;
我郑重、郑重地建议学习如何使用调试器。调试器是你的朋友。刚开始学习一门新语言,学习IDE(项目管理器、编辑器、编译器/链接器/运行时执行和调试器)与学习语法一样重要。在不了解发生了什么的地方设置断点,并作为状态(变量值)进行监视改变。你对正在发生的事情有了深刻的了解。然后你会很快成为专家,可以帮助其他学生。祝你好运!
int[] arrayOfBoxes = new int[7];
int valueOnTheBall = 11;
for (int numberOnTheBox=0; numberOnTheBox<7; numberOnTheBox++) 
{
  arrayOfBoxes[numberOnTheBox] = valueOnTheBall;
  valueOnTheBall++;
}
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++;
      }
}