我正在为一个类的作业工作,我首先需要声明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]);
}
}
}
}
答案 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]);
}
}
(int)(Math.random()*(9-1+1))+1;
可能缩短为
(int)(Math.random()*9)+1;