[英]How would I print coordinates from my 2d array?
我将如何从我的二维数组打印坐标? 我必须从数字 5 所在的任何地方打印坐标。 使用Math.random
将数字随机生成到数组中。 这是代码:
public class MultiArrays {
public static void main(String[] args) {
int[][] array = new int[3][4];
for (int index = 0; index < array.length; index++) {
for (int j = 0; j < array[index].length; j++) {
array[index][j] = (int) (Math.random() * 10);
}
}
for (int column = 0; column < array[0].length; column++) {
for (int row = 0; row < array.length; row++) {
System.out.print(array[row][column] + " | ");
}
System.out.println();
}
}
}
这看起来像 Java,而不是 JavaScript(只是注意基于问题上的标签)。 它们是非常不同的东西,所以要清楚。
我也不清楚你所说的“当数字是 5 时”是什么意思。 你的意思是多维数组的第二个值是5?
如果是这种情况,您的第二个外部 for 循环中会有一些混乱。 您可能想要迭代array
所有值(所以array.length
),然后是这些值的所有内部值。
要在数组的内部(右侧)值为 5 时输出数组的值,您需要一个条件,在该条件下进行System.out
调用。
我认为你正在寻找的是:
for (int row = 0; row < array.length; row++) {
for (int col = 0; col < array[row].length; col++) {
if (array[row][col] == 5) {
System.out.println("Row: " + row + " Col: " + col + " has value 5");
}
}
}
它将第一行/列视为 0(从 0 开始)
int m = 3;
int n = 4;
// random array (n * m)
int[][] arr1 = IntStream.range(0, n)
.mapToObj(i -> IntStream.range(0, m)
// generate random array
.map(j -> (int) (Math.random() * 10))
.toArray())
.toArray(int[][]::new);
int x = 5;
// finding (x) coordinates
int[][] arr2 = IntStream.range(0, arr1.length)
.mapToObj(i -> IntStream.range(0, arr1[i].length)
.filter(j -> arr1[i][j] == x)
// (x) coordinates
.mapToObj(j -> new int[]{i, j})
.toArray(int[][]::new))
.flatMap(Arrays::stream)
.toArray(int[][]::new);
// output
Arrays.stream(arr1).map(Arrays::toString).forEach(System.out::println);
Arrays.stream(arr2).map(Arrays::toString).forEach(System.out::println);
输出:
[3, 0, 5]
[8, 6, 1]
[4, 7, 1]
[5, 0, 3]
[0, 2]
[3, 0]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.