我试图用随机数字打印一个2d网格,用-1s打印另一个大小相等的网格代替可被3整除的数字。我完成了很多东西,但第二个网格只打印-1s。我究竟做错了什么?如何让第二个网格只能打印-1s,其中数字可以被3整除?谢谢!
public class practice
{
public int[][] createArray(int rSize, int cSize) {
Random r = new Random();
int[][] array = new int[rSize][cSize];
for (int row = 0; row < array.length; row++) {
for (int col = 0; col < array[0].length; col++) {
array[row][col] = r.nextInt(25);
}
}
return array;
}
public void print2DArray(int[][] Array) {
for (int row = 0; row < Array.length; row++) {
for (int col = 0; col < Array[0].length; col++) {
System.out.print(Array[row][col] + "\t");
}
System.out.println("\n");
}
}
public int[][] createCoords(int[][] Array) {
int[][] coord = {
{-1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
{-1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
{-1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
{-1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
{-1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
{-1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
{-1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
{-1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
{-1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
{-1, -1, -1, -1, -1, -1, -1, -1, -1, -1}
};
for (int row = 0; row < coord.length; row++) {
for (int col = 0; col < coord[0].length; col++) {
System.out.print(coord[row][col] + "\t");
}
System.out.println("\n");
}
for (int row = 0; row < coord.length; row++) {
for (int col = 0; col < Array[row].length; col++) {
if (Array[row][col] % 3 == 0) coord[row][col] = -1;
}
}
return coord;
}
public static void main(String[] args) {
Scanner in = new Scanner(System. in );
practice c = new practice();
int[][] myArray;
myArray = c.createArray(10, 10);
c.print2DArray(myArray);
c.createCoords(myArray);
}
}
答案 0 :(得分:0)
在您检查coords
元素为3的倍数之前,您似乎正在打印Array
数组,此外,您正在初始化{{1}所有-1所以将coords
的元素更改为-1确实......没有。将coords
初始化为所有0(这是默认设置,因此您根本不需要初始化它,只需声明它),然后在检查coords
后打印它。
一些风格的东西:首先,初始大写标识符通常是为类保留的,实际上标准类库中已经有Array
。请改用java.lang.reflect.Array
,或者更好的是,使用描述它使用的名称,而不是它的类型。其次,您已经有了array
方法,为什么不在print2DArray
中使用它?最后,createCoords
需要与coords
(或者您将其重命名为:-)的大小相同),因此您应该声明它。如果您更改传递给Array
的尺寸,则必须记住也要更改createArray
。