Напишите программу, которая проверяет, является ли двумерный целочисленный массив квадратным массивом, то есть равны ли его строки и столбцы. Мой код ниже - PullRequest
0 голосов
/ 25 февраля 2020
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");
            }
        }
    }
}
}

1 Ответ

0 голосов
/ 25 февраля 2020

Хотя ваша логика c верна, вы выполняете избыточную проверку. В идеале вы должны иметь длину строки, используя a.length. Вы должны выполнить итерацию по каждой строке один раз, используя a[j].length и проверить, равно ли количество строк количеству значений в каждой строке (количеству столбцов).

Если нет, то выведите «не квадрат» и вырваться из л oop. Держите флаг, указывающий, что l oop был явно остановлен. Если нет, флаг остается прежним, и вы можете сделать вывод, что это был квадрат.

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");
}
...