将函数中的数组与空值进行比较

时间:2017-11-25 11:37:58

标签: java arrays function null

我目前正在学习功能并完成给定的任务:

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

我在检查数组是否为空时遇到问题。我让数组检查相互之间是否相等,但是如果是null则它是一个不同的问题。每当我尝试检查[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));

  }
}

5 个答案:

答案 0 :(得分:0)

检查数组是否为null,而不是

if(a[i] == null)

你应该做

if(a == null)

答案 1 :(得分:0)

使用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
    }
}

“适当”取决于您。通常人们会希望该方法返回false,如果其中一个数组是null而另一个数组不是,true它们都是null

请注意,您的代码存在其他问题。作为提示:尝试比较两个不同大小的数组。

答案 2 :(得分:0)

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

您可以按顺序执行以下检查以解决练习:

  • 如果其中一个数组为false而另一个数组不是{{p>

  • >,则返回null

  • 如果两个数组均为true,则返回null

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

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

  • 如果您已达到此点(尚未从之前的任何检查中返回),请返回true

答案 3 :(得分:0)

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

尝试类似:

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 :(得分:0)

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

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