带有2d数组的随机数

时间:2014-06-30 01:52:40

标签: java arrays type-2-dimension

我正在为一个类的作业工作,我首先需要声明5行5列的整数数组。然后将数组元素初始化为1到10之间的随机数。输出只是一个3的长列表,没有别的。如果你能指出我正确的方向,我将非常感激。

我必须随意使用此声明:

int r = (int)(Math.random()*(9-1+1))+1;

这是我到目前为止所做的并且它无法正常工作:

public static void main(String[] args) {
    // TODO Auto-generated method stub
int[][] table= new int [5][5];
int r = (int)(Math.random()*(9-1+1))+1;

for(int row = 0; row < table.length; row++){
for(int column = 0; column < table[row].length; column++){
    table[row][column]=r;
    System.out.println(table[row][column]);
}
}

}

}

2 个答案:

答案 0 :(得分:3)

你需要在for循环中进行随机化 ,而不是在for循环之前进行一次。这样,随机化将在循环的每次迭代时发生。

您的代码在伪代码中的逻辑基本上是:

set r to a single random number
loop through the array 
   assign r (which never changes) to each item in the array
end loop

您想要做的是:

loop through the array
  create a new random r with each iteration of the loop 
  assign that r to an array element.
end loop

修改
你问:

  

我想将输出打印为包含行和列的表。

然后你需要使用嵌套的for循环来做到这一点。要么使用你已经拥有的循环,要么以类似的方式创建一个新的循环。了解System.out.print(...)System.out.println(...)打印某些内容然后开始换行时会向屏幕输出内容。您需要找出使用这两种方法的位置。

答案 1 :(得分:3)

因为你在循环之前计算r,

int r = (int)(Math.random()*(9-1+1))+1;

你表中的所有数字都是相同的。 将其移动到循环内部:

for(int row = 0; row < table.length; row++){
    for(int column = 0; column < table[row].length; column++){
        int r =(int)(Math.random()*(9-1+1))+1;
        table[row][column]=r;
        System.out.println(table[row][column]);
    }
}

PS。

(int)(Math.random()*(9-1+1))+1;

可能缩短为

(int)(Math.random()*9)+1;