[英]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.