用for循环填充二维数组

时间:2014-04-30 14:50:30

标签: java arrays for-loop

我正在尝试从8x8制作一个二维数组,它将由for循环填充。该表必须以数字32开头,每个后续数字应减少1.

这是我尝试解决问题的方法:

public class Inzend2 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        int [] [] blastTable = new int [8] [8]; 

        for(int i = 32; i < blastTable.length; i--) {
            for(int j = i; j < blastTable.length; j--) {
                System.out.println( blastTable[i][j]);
            }            
        } 

    }

}

我做错了什么? (运行程序时没有打印)

7 个答案:

答案 0 :(得分:1)

这样的东西会起作用。你有一个数组(长度为8)的数组(每个长度为8)。外部for循环遍历第一个数组,内部for循环遍历包含的数组。

请注意,您尚未使用任何值初始化数组。

public static void main(String[] args) {
// TODO Auto-generated method stub
   int [] [] blastTable = new int [8] [8]; 

   for(int i = blastTable.length; i > 0; i--) {
      for(int j = blastTable.length; j > 0; j--) {
         System.out.println( blastTable[i][j]);
      }
   } 
}

答案 1 :(得分:1)

你正在以错误的方式尝试。因为行大小是8而不是32.你的数组元素是未初始化的,每个元素的默认值都是0.试着打印元素的值:

public static void main(String[] args) {

   int [] [] blastTable = new int [8] [8]; 

   for(int i = 0; i < blastTable.length; i++) {
     for(int j = 0; j < blastTable[i].length; j++) {
       System.out.println( blastTable[i][j]);
    }
  } 
}

答案 2 :(得分:0)

一些注意事项:

  1. 8x8是64,所以如果从32开始,你接受最后一个数字是-31,对吗?或者你想从64开始并且最后一个数字是1?

  2. 您可以在不使用第三个计数器的情况下解决它,但使用起来更简单,请尝试以下示例。

  3. 样品:

    int count = 32; // or 64 as I proposed before
    int[][] blastTable = new int[8][8]; 
    
    for(int i = 0; i < blastTable.length; ++i) {
      for(int j = 0; j < blastTable.length; ++j) {
        blastTable[i][j] = count--;
      }
    }
    

答案 3 :(得分:0)

首先,您的表未初始化。 其次,表的大小是8而不是32 第一个循环将通过表格的行,第二个循环将通过列(因为我们正在谈论一个双层的桌子)
第一个循环应以i = blastTable.length
开头 第二个循环应以j = blastTable.length

开头

答案 4 :(得分:0)

首先: 8x8阵列有64个条目。

其次:要打印该值,您必须先将其指定。

第三:使用计数器填充数组。您正在迭代不在数组的范围内。所以你从blastTable [32] [32]开始,但这是nocht较小8你的for循环中的条件是什么。

for(int i = 32; i < blastTable.length; i--) {
//means: set i = 32; as long as i < blastTable.lenght (8) proceed the loop;
//       after each iteration decrease i by one

一种正确的方法是:

int counter = 32;   //or 64
for(int i = 0; i < blastTable.length; i++) {
    for(int j = 0; j < blastTable[i].length; j++) {
        blastTable[i][j] = counter;
        counter--;
        System.out.println( blastTable[i][j]);
    }            
}

此代码将从32到-31的所有数字填充到您的数组(或64到1)并打印它们。

答案 5 :(得分:0)

您需要增加行和列索引,同时减少32的起始值。

public static void initializeTable(int[][] blastTable, int startValue) {
    for (int i = 0; i < blastTable.length; i++) {
        for (int j = 0; j < blastTable[i].length; j++) {
            blastTable[i][j] = startValue--;
            System.out.println( blastTable[i][j]);
        }
    }
}

答案 6 :(得分:0)

感谢您和我一起思考!我修好了,这是我的最终结果:

public static void main(String[] args) {
    // TODO Auto-generated method stub

    int [] [] blastTable = new int [8] [8];

    int counter = 32;

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

        for(int j = 0; j < blastTable[i].length; j++) {
            blastTable[i][j] = counter;
            counter--;
            System.out.print(blastTable[i][j]+" ");
        }
        System.out.print("\n");
    }

}