Код тестировала на всех данных, все находит верно.
На каких именно тестовых данных ошибка, не пишет.
ЗЫ: про ненужность/излишество комментариев в коде просьба не писать, "Чистый код" читали, это здесь к делу не относится. Жалко тратить попытку чтоб опубликовать то же самое без комментариев в коде.
package com.javarush.task.task20.task2026;
/*
Алгоритмы-прямоугольники
*/
public class Solution {
public static void main(String[] args) {
byte[][] a1 = new byte[][]{
{1, 1, 0, 0},
{1, 1, 0, 0},
{1, 1, 0, 0},
{1, 1, 0, 1}
};
byte[][] a2 = new byte[][]{
{1, 0, 0, 1},
{0, 0, 0, 0},
{0, 0, 0, 0},
{1, 0, 0, 1}
};
int count1 = getRectangleCount(a1);
System.out.println("count = " + count1 + ". Должно быть 2");
int count2 = getRectangleCount(a2);
System.out.println("count = " + count2 + ". Должно быть 4");
}
public static int getRectangleCount(byte[][] a) {
int count = 0;
if (a[0][0] == 1) //только первый элемент
count++;
for (int j = 1; j < a[0].length ; j++) { //первая строка за искл первого элемента
if ((a[0][j] == 1) && (a [0][j-1] != 1)) {
count++;
}
}
for (int i = 1; i < a.length; i++) { // все остальное
for (int j = 0; j < a[i].length-1 ; j++) {
if ((j==0) && (a [i][0] == 1) && (a[i-1][j] !=1)) {
count++;
}
else if ((a[i][j+1] == 1) && (a[i][j] !=1) ) {
count++;
}
}
}
return count;
}
}