为2d数组写一个for循环?

时间:2014-05-20 08:11:52

标签: java arrays 2d

我有一个程序,用户给程序大小的数组即(列和行大小),我试图给出数组中的每个位置相同的值。我的循环问题虽然如此。

for(int i = 0; i < row; i++){
        for(int j = 0; j < col; j++){
            //CODE
        }   
    } 

我可以看到问题是我试图给不存在的位置赋值,但我不知道如何解决这个问题。任何帮助将不胜感激:)

6 个答案:

答案 0 :(得分:1)

尝试使用length,而不是使用用户输入

  // ask user for sizes
  int col = ...;
  int row = ...;

  // declare the array, let it be of type int 
  // it's the last occurence of "row" and "col"
  int[][] data = new int[row][col];

  // loop the array    
  for (int r = 0; r < data.length; ++r) { // <- not "row"!
    int[] line = data[r];

    for (int c = 0; c < line.length; ++c) { // <- not "col"!
      // do what you want with line[c], e.g. 
      // line[c] = 7; // <- sets all array's items to 7
    }
  }

使用实际数组维度 阻止 您访问不存在的项目

答案 1 :(得分:0)

从您提供的代码段中,您似乎没事。也许数组没有很好地初始化或者你的行号和列数不匹配。尝试使用比“i”和“j”更具体的变量名称。

答案 2 :(得分:0)

在java中

try{
  for(int i = 0; i < row; i++){
        for(int j = 0; j < col; j++){
            //CODE
        }   
    }
}catch(IndexOutOfBoundsException exp){
   System.out.printlv(exp.getMessage());
}

答案 3 :(得分:0)

首先,是什么让你说你“可以看到问题是我试图给不存在的位置赋予价值”?你看到什么症状让你相信这个?

从表面上看,你的代码看起来很好,但是(这是)你省略了最重要的代码,即你的2D数组的声明,以及部分在循环体内,您将值分配给数组成员。如果你添加这些,那么我或其他人可能会进一步提供帮助。

答案 4 :(得分:0)

解决方案:

int matriz[][] = new int [row][col];
for(int i = 0; i <row; i++){
    for(int j = 0; j < col; j++){
        matriz[i][j] = 0; 
    }   
} 

答案 5 :(得分:0)

//try this one 
import java.util.Scanner;  //Scanner class required for user input.

class xyz
{
  public static void main(String ar[])
  {
     int row,col;
     Scanner in=new Scanner(System.in); //defining Object for scanner class
     System.out.println("Enter row");
     row=in.nextInt();
     System.out.println("Enter Column");
     col=in.nextInt();
     int mat[][]=new int[row][col];    //giving matrix size
     for(int i=0;i<row;i++)
     {
        for(int j=0;j<col;j++)
        {
            mat[i][j]=0;   //or any value decided by you
        }
     }
  }
}