Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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循环填充二维数组_Java_Arrays_For Loop - Fatal编程技术网

Java 用for循环填充二维数组

Java 用for循环填充二维数组,java,arrays,for-loop,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

我正在尝试从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]);
            }            
        } 

    }

}
Inzend2中的公共类{
公共静态void main(字符串[]args){
//TODO自动生成的方法存根
int[]blastTable=新int[8][8];
对于(int i=32;i

我做错了什么?(当我运行程序时,不会打印任何内容)

类似的操作会起作用。您有一个数组(长度为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]);
      }
   } 
}
一些考虑:

  • 8x8是64,所以如果从32开始,您是否接受最后一个数字是-31,对吗?还是从64开始,最后一个数字是1

  • 您可以不使用第三个计数器来求解它,但是使用它更简单,所以请尝试以下示例

  • 样本:

    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--;
      }
    }
    
    int count=32;//还是像我之前建议的那样
    int[]blastTable=新int[8][8];
    对于(int i=0;i
    您尝试的方式不正确。因为行大小是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]);
        }
      } 
    }
    
    publicstaticvoidmain(字符串[]args){
    int[]blastTable=新int[8][8];
    对于(int i=0;i
    首先,您的表未初始化。 其次,表的大小是8而不是32 第一个循环将遍历表的行,第二个循环将遍历列(因为我们讨论的是二维表)
    第一个循环应以i=blastTable.length开头

    第二个循环应该以j=blastTable开始。长度首先:一个8x8数组有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
    
    for(int i=32;i
    一个正确的方法是:

    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]);
        }            
    }
    
    int counter=32;//或64
    对于(int i=0;i

    此代码将把32到-31之间的所有数字填入数组(或64到1)并打印出来。

    您需要增加行和列索引,同时减少起始值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]);
            }
        }
    }
    
    publicstaticvoidinitializetable(int[]blastTable,int startValue){
    对于(int i=0;i
    谢谢大家和我一起思考!我已经修复了它,这是我的最终结果:

    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");
        }
    
    }
    
    publicstaticvoidmain(字符串[]args){
    //TODO自动生成的方法存根
    int[]blastTable=新int[8][8];
    int计数器=32;
    对于(int i=0;i
    外部for循环从不执行,因为
    i
    被初始化为32,即>blastTable.length。2D数组的长度为8。谢谢!这正是我要找的!谢谢你的帮助,最后一个数字是-31是正确的。我刚开始学习java,我很困惑,因为这个数字必须递减但是你没问题,我首先必须使用循环中的++来填充数组8 x 8次。