我正在编写一个将两个数组进行比较的程序,但无法将其与空元素进行比较

时间:2018-12-08 23:01:19

标签: java arrays

我的代码粘贴在下面。该程序可以在不同类型的二维数组上正常工作,如果它们相同,则返回“ true”,否则,返回false。但是,当两个数组在两个维度上都具有空元素时,会出现一个小错误:

    int a[][] = {{},{}};
    int b[][] = {{},{}};

此输入需要返回“ true”,因为数组仍然相同,但是我遇到了数组索引超出范围的错误。有什么办法可以使我的程序识别出这两个数组仍然相同?

public class ArrayCompare {
    public static void main(String[] args){
        int a[][] = {{},{}};
        int b[][] = {{},{}};
        boolean result = equals(a,b);
        System.out.println(result);
    }

    public static boolean equals(int[][] a, int[][] b) {
        boolean boo = true;
        if (a != null && b != null) {
          if (a.length != b.length || a[0].length != b[0].length || a[1].length != b[1].length)
              boo = false;
          else
              for (int i = 0; i < b.length; i++) {
                  for(int j =0; j <b.length; j++) {
                      if (b[i][j] != a[i][j]) {
                          boo = false;    
                      }   
                  }

            }
        }else {
          boo = false;
        }
        return boo;
    }
}

2 个答案:

答案 0 :(得分:2)

将此检查添加到<div id="container"> <table id="table1"> <tr> <td> <header> <h2>TABLE 1</h2> </header> </td> </tr> </table> <table id="table2"> <tr> <td> <header> <h2>TABLE 2</h2> </header> </td> </tr> </table> </div>语句else

a[i].length > 0

PS

您的代码经过一些更正后可以正常工作。大概我给你个主意,如何改进它。那这个呢?

else {
    for (int i = 0; i < b.length; i++) {
        if (a[i].length > 0) {  // add check for empty array
            for (int j = 0; j < b.length; j++) {
                //...
            }
        }
    }
}

答案 1 :(得分:0)

您的代码中存在一个小逻辑缺陷。在嵌套循环中,应该遍历每个数组中的元素。

Calendar.current.dateComponents(components, from: startDate!, to: currentDate).day!