首页 > 解决方案 > 编写一个程序来检查一个二维整数数组是否是一个正方形数组,这意味着它的行和列是否相等。我的代码如下

问题描述

package Homeworks;

public class HomeWork85 {
public static void main(String[] args) {


    int[][] a = {
            {1,1,1,2},
            {1,1,1},
            {1,1,1}
        };

    int[][] b = {
            {1,1,1,1},
            {1,1,1,1},
            {1,1,1,1}
        };

    for (int i=0; i<a.length;i++) {
        for (int j=0;j<a[i].length-1;j++) {
            if (a.length==a[j].length) {
                System.out.println("It is a square");
            }else {
                System.out.println("Not a square");
            }
        }
    }
}
}

标签: javaarraysfor-loop2dvariable-length-array

解决方案


尽管您的逻辑是正确的,但您正在进行冗余检查。理想情况下,您应该使用a.length. 您应该遍历每一行一次,使用a[j].length并检查行数是否等于每行中的值数(列数)。

如果不是,则打印 'not a square' 并跳出循环。保留一个标志,表明循环已显式停止。如果不是,则标志保持不变,您可以断定它是一个正方形。

int flag = 0;
for (int j=0;j<a.length;j++) {

        if (a.length != a[j].length){
            System.out.println("Not a Square!");
            flag = 1;
            break;
        }

}   
if (flag == 0){
    System.out.println("It is a Square");
}

推荐阅读