2017-11-25 141 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表示數組本身。

您只能比較兼容數據類型的值(例如,!===)。該錯誤消息源自嘗試比較不兼容數據類型的值。