簡體   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