繁体   English   中英

我将如何从我的二维数组打印坐标?

[英]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 开始)

IntStream ,您可以使用IntStream

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM