2017-11-25 179 views
1

目前,我正在学习功能,并具有给定的任务:与空值的函数比较数组值

“写一个函数eqarr,这需要两个int数组作为参数和返回true,如果他们等于,否则为false;你的函数应该在每种情况下返回一个值(即使数组为空)“

我在检查数组是否为空有问题。我得到的数组检查是否相等,但与空它是一个不同的问题。每当我尝试检查[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)); 

    } 
} 
+0

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

回答

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

其中,“适当的”是你。通常,如果其中一个阵列是null而另一个不是和true它们都是null,则通常会希望该方法返回false

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

0

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

if(a[i] == null) 

你应该做的

if(a == null) 
0

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

您可以依次执行以下检查以解决运动:

  • 返回false如果阵列中的一个是null,另一种是没有。如果两个数组都是null

  • 返回false如果数组长度不同。如果任何元素不同,则返回false

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

0

该问题明确指出,如果数组为空而不是它们包含的值,则应该返回一个值。无论如何,基本类型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; 
    } 
0

没有让步太多,a[i]表示你的阵列的i个元素和a表示数组本身。

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