【问题标题】:Write a program that checks if a 2-D integer array is a square array, meaning, if its rows and columns are equal. My code is below编写一个程序来检查一个二维整数数组是否是一个正方形数组,这意味着它的行和列是否相等。我的代码如下
【发布时间】:2020-06-08 16:23:51
【问题描述】:
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");
            }
        }
    }
}
}

【问题讨论】:

  • 我的结果:不是正方形 不是正方形 不是正方形 是正方形 是正方形 是正方形 是正方形
  • ...问题是?
  • 它没有给我一个单一的“它是一个正方形”或它不是一个正方形。它给了我它既是正方形又不是正方形。所以我不知道我做错了什么。

标签: java arrays for-loop 2d variable-length-array


【解决方案1】:

虽然你的逻辑是正确的,但你正在做冗余检查。理想情况下,您应该使用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");
}

【讨论】:

  • 谢谢你。你为什么要让flag=1和flag==0?这些数字代表什么?
  • 标志,一般来说,是一个事件是否发生的指示器。在这种情况下,可能有两种结果,要么是正方形,要么不是。所以在我的 for 循环中,我正在检查行和列长度之间是否存在任何不匹配(不是正方形)。因此,如果发生此事件,我会为标志 (1) 设置一些值。如果值为 1,则表示已经决定它不是正方形,我不需要进一步处理。为方便起见,我只是使用了 1 和 0,它可以是任意数字或布尔值。
猜你喜欢
  • 2021-08-31
  • 1970-01-01
  • 2015-02-12
  • 1970-01-01
  • 2022-07-18
  • 1970-01-01
  • 2020-03-11
  • 1970-01-01
  • 2016-07-03
相关资源
最近更新 更多