Как написать метод, который возвращает true, если ни одна строка не длиннее предыдущей строки, в противном случае false?

Скажем, если у меня есть 2D-массив:

int[][] s = {{1, 4, 5, 10, 11}, {2, 6, 8}, {3, 9, 12}, {7}}; 

и я хочу написать метод, который гарантирует, что следующая строка будет короче, чем остальная часть массива, как бы я поступил так?

Как мне написать метод, который возвращает истину, если ни одна строка не длиннее предыдущей, и ложь в противном случае?

Вот моя логика, хотя я далеко, просто не понимаю логически, как это сделать, я думаю.

 public static boolean rowDecrease(int[][] t){
     //result empty array here
     for (int j = 0; j < t.length; j++) {
      for (int i = 0; i< t[i].length; i++) { // Sum of Columns
        if (t[i].length>result){
          result = t[i].length;
          return false;
        }
        if (t[i].length<result){
          result = t[i].length;
          return true;
        }


        }

      }

3 ответа

Пожалуйста, сделайте попытку или представьте проблему с существующим кодом перед публикацией в будущем. В противном случае мы начнем отправлять вам счета.

public boolean shorterThanTheRest(int[][] s){
    int shortestLength = s[0].length + 1;
    for(int i = 0; i < s.length; i++)
        if(s[i].length < shortestLength)
            shortestLength = s[i].length;
        else
            return false;
     return true;
}

Я думаю, что код, подобный этому, разрешит ваш вопрос:

boolean resultado = true;

for(int i = 1; i < s.length; i++){
    if(s[i].length >= s[i-1].length) return false;
}

return true;

Вы можете сделать это с помощью Java Stream:

int[][] s = {{1, 4, 5, 10, 11}, {2, 6, 8}, {3, 9, 12}, {7}};
List<Integer> S = Arrays.stream(s).map(i->i.length).collect(Collectors.toList());
boolean is = IntStream.range(0, S.size()).skip(1).allMatch(i->S.get(i)<=S.get(i-1));

Я надеюсь, что это помогает.

Другие вопросы по тегам