java - 编写一个程序来检查一个二维整数数组是否是一个正方形数组,这意味着它的行和列是否相等。我的代码如下
问题描述
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");
}
}
}
}
}
解决方案
尽管您的逻辑是正确的,但您正在进行冗余检查。理想情况下,您应该使用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");
}
推荐阅读
- php - 如何在 Laravel 中自动创建子域
- javascript - Web 动画 API:translateX 的 OOP 类值未定义
- mysql - 重复的 SQL ID 对
- shell - 如何在其他用户上更改脚本并在新用户上继续执行脚本?
- java - 作业 Java 问题
- laravel - Laravel 用户在浏览器关闭时注销
- amazon-web-services - lambda@edge 超时和 s3 图像处理
- python - 列表范围内的索引的列表索引超出范围错误
- reactjs - 为什么 setState 在这里包含另一个函数,而不是简单的属性更新?
- c# - 如何将变量分配给线程以进行状态更新