2014-04-30 69 views
-2

我试图从8x8制作一个二维数组,它将由for循环填充。该表具有与号码32,每下面的编号开始应该由1使用for循环填充二维数组

减少这是我尝试的问题的解决方案:

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]); 
      }    
     } 

    } 

} 

我在做什么错? (当我运行程序时没有打印任何东西)

+2

外循环从不执行,因为'i'初始化为32> blastTable.length。二维数组长度为8. – deanosaur

回答

0

首先:一个8×8阵列具有64个条目。

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

第三位:使用计数器来填充阵列。你正在迭代而不是在你的数组的边界。所以你从blastTable [32] [32]开始,但是这是小的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)填充的所有数字,并打印出来。

+0

谢谢!这正是我一直在寻找的地方! – Sophie

1

类似这样的东西将起作用。你有一个数组(长度为8)的数组(每个长度为8)。外部for循环遍历第一个数组,inner 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]); 
     } 
    } 
} 
0

一些注意事项:

  1. 8×8是64,所以如果你从32开始,你接受的是最后一个数字是-31,正确吗?或者你想从64开始,并有1作为最后一个号码?

  2. 你可以解决它而不使用第三个计数器,但使用它更简单,所以请尝试下面的示例。

样品:

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--; 
    } 
} 
+0

感谢您的帮助,最后一个数字是-31是正确的。我刚开始学习java,我很困惑,因为数量必须减少,但你没事,我首先必须在循环中用++来填充数组8×8次。 – Sophie

1

您正试图在一个错误的way.Because行大小是8不32.And你的数组元素是未初始化的,每一个元素都会有默认值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]); 
    } 
    } 
} 
0

首先你的表没有初始化。 其次,表的大小是8而不是32 第一个循环将通过表的行,第二个循环将通过列(因为我们正在谈论一个双dimentinal表)
第一个循环应该以I = blastTable.length
第二环路应该其中j =开始blastTable.length

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]); 
     } 
    } 
} 
你的起始值
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"); 
    } 

}