簡體   English   中英

如何知道兩個矩陣的大小是否相同 [Java]

[英]How to know if two matrices have the same size [Java]

我是一個剛開始學習遞歸編程的新程序員。 我試圖遞歸地比較矩陣的大小。

public static boolean mismasFilas(int[][] m1, int[][] m2, int fila) {
    boolean sol = true;
    int k = 0, h = 0;
    if (fila >= 0) {
        if (m1[fila].length != m2[fila].length) {
            
            return false;
        } else {
            mismasFilas(m1, m2, fila - 1);
        }
    }
    return sol;
}

到目前為止,它運行良好,但return false; 語句沒有按預期工作,它沒有退出該方法。 我究竟做錯了什么? 謝謝你的幫助。

如果要檢查二維arrays是否為矩形矩陣並且兩者具有相同的維度,您可以執行以下操作:

public static boolean isRectangle2DArray(int[][] array) {
    return Arrays.stream(array).mapToInt(row -> row.length).distinct().count() == 1;
}

public static boolean sameDimensions(int[][] m1, int[][] m2) {
    return isRectangle2DArray(m1) && isRectangle2DArray(m2) 
            && m1.length == m2.length && m1[0].length == m2[0].length;
}

如果您不想檢查二維arrays是否為矩形,您可以執行以下操作:

public static boolean sameDimensions(int[][] m1, int[][] m2) {
    if (m1.length != m2.length) {
        return false;
    }
    for (int i = 0; i < m1.length; i++) {
        if (m1[i].length != m2[i].length) {
            return false;
        }
    }
    return true;
}

如果您可以使用stream您還可以執行以下操作:

public static boolean sameDimensions(int[][] m1, int[][] m2) {
    return m1.length == m2.length && 
            IntStream.range(0, m1.length)
                    .allMatch(i -> m1[i].length == m2[i].length);
}

然后:

int[][] m1 = {{1, 2, 3}, {4, 5, 6}};

int[][] m2 = {{7, 8, 9}, {10, 11, 12}};

int[][] m3 = {{7, 8}, {9, 10}, {11, 12}};

System.out.println("(m1, m2): " + sameDimensions(m1, m2));
    
System.out.println("(m1, m3): " + sameDimensions(m1, m3));

輸出:

(m1, m2): true
(m1, m3): false

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM