【问题标题】:Comparing arrays in a function with null values将函数中的数组与空值进行比较
【发布时间】:2017-11-25 11:37:57
【问题描述】:

我目前正在学习函数并有给定的任务:

"编写一个函数 eqarr,它接受两个 int 数组作为参数,如果相等则返回 true,否则返回 false;您的函数应该在每种情况下都返回一个值(即使数组为空) "

我在检查数组是否为空时遇到问题。我正在让数组检查是否彼此相等,但使用 null 这是另一个问题。每当我尝试检查 a[i] 是否等于 null a[i] == null 时,我都会收到此错误 error: bad operand types for binary operator '=='

我们不能使用现有的功能。

任何帮助将不胜感激。

干杯

public class Week8Q5 {

  public static boolean eqarr(int[] a, int[] b) {

    for (int i = 0; i < a.length; i++) {

      if (a[i] != b[i])
        return false;

    }
    return true;
  }

  public static void main(String[] args) {

    int[] a = { 5, 6, 7, 8 };
    int[] b = { 5, 6, 7, 8 };

    System.out.println(eqarr(a, b));

  }
}

【问题讨论】:

  • 在循环之前执行这些检查if (a == null &amp;&amp; b == null) return true; if (a == null || b == null) return false; if (a.length != b.length) return false;

标签: java arrays function null


【解决方案1】:

使用a[i],您正在访问数组的一个元素。由于该数组被定义为 int[](即 primitive int values 的数组),它永远不会是 null

但是如果a 本身是null,那么你当前的实现将会失败,所以你应该检查一下:

public static boolean eqarr(int[] a, int[] b) {
    if (a == null || b == null) {
        // return appropriate value
    }
}

“合适”的位置由您决定。通常,如果其中一个数组是 null 而另一个不是并且 true 它都是 null,则通常会期望该方法返回 false

请注意,您的代码还有另一个问题。提示:尝试比较两个不同大小的数组。

【讨论】:

    【解决方案2】:

    您可以使用条件arr == null 来检查数组arr 是否为null

    您可以依次执行以下检查来解决该练习:

    • 如果其中一个数组是null 而另一个不是,则返回false

    • 如果两个数组都是null,则返回true

    • 如果数组长度不同,则返回false

    • 如果任何元素不同,则返回 false

    • 如果您已达到这一点,则返回 true(尚未从任何早期检查中返回)。

    【讨论】:

      【解决方案3】:

      问题明确指出,如果数组为 null 而不是它们包含的值,则您应该返回一个值。原始类型 int 无论如何都不能为空。

      尝试类似:

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

      【讨论】:

        【解决方案4】:

        在不放弃太多的情况下,a[i] 表示数组的第 ith 个元素,a 表示数组本身。

        您只能比较兼容数据类型的值(例如 !===)。错误消息源于尝试比较不兼容数据类型的值。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-10-23
          • 2013-06-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多