如果没有行长于前一行,如何写一个返回true的方法,否则为false?

时间:2016-04-07 06:40:32

标签: java arrays for-loop boolean ragged

说,如果我有一个2D数组:

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

我想编写一个方法来确保下一行的长度比数组的其余部分的长度短,我该怎么做呢?

基本上我怎么写一个方法,如果没有行更长,则返回true 比前一行,否则为假?

这是我的逻辑,即使我很远,只是不明白逻辑上如何去理解我猜。

 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 个答案:

答案 0 :(得分:0)

我认为类似的代码可以解决您的问题:

boolean resultado = true;

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

return true;

答案 1 :(得分:0)

请在将来发布之前尝试或提出现有代码的问题。否则,我们必须开始向您发送发票。

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;
}

答案 2 :(得分:0)

您可以使用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));

我希望它有所帮助。