我有一个程序,用户给程序大小的数组即(列和行大小),我试图给出数组中的每个位置相同的值。我的循环问题虽然如此。
for(int i = 0; i < row; i++){
for(int j = 0; j < col; j++){
//CODE
}
}
我可以看到问题是我试图给不存在的位置赋值,但我不知道如何解决这个问题。任何帮助将不胜感激:)
答案 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
}
}
}
}