2014-01-18 219 views
-3

我想要一個布爾方法需要兩個數組並返回true當第一個數組中的所有數字都在第二個數組中時。如果至少有一個號碼不匹配,則返回false有沒有更好的方法來編寫這種方法?

這是我的代碼,但有些東西是關閉的。

public static boolean noMoreRolls(int[] paramArrayOfInt1, int[] paramArrayOfInt2) { 
    boolean test[] = new boolean[paramArrayOfInt1.length]; 
    int total = 0;  
    boolean end = false; 

    for (int i = 0; i < paramArrayOfInt1.length; i++) { 
     for (int j = 0; j < paramArrayOfInt2.length; j++) { 
      if (paramArrayOfInt1[i] == paramArrayOfInt2[j]) 
       test[i] = true; 
     } 
     if (test[i] == true) 
      total++; 
    } 
    if (total == test.length) { 
     end = true; 
    } 
    return end; 
} 

在此先感謝。

編輯:抱歉誤導和錯誤的方式把事情放下。 2個陣列的長度不一樣。 一個理解我的代碼的例子:數組1:[6,6,1,2,3,] /數組2:[2,3],它應該返回虛假。 Array 1:[2]/Array 2:[5,5,4,4,2],它應該返回true

+1

' 「這是我的代碼,但東西了。」「 - 嗯,什麼......究竟* *是關?請給我們一些關於你在尋找什麼的指示,你是什麼意思「更好的方式」。 –

+1

更適合codereview。在SO中,你不應該對「某些東西不在」做出模糊的陳述 –

+2

你在這裏進行n ** 2比較,我會親自調查一下hashmaps。否則 - 就像其他評論者一樣 - 這個問題並不適用於SO。 –

回答

2

使用java.util.Arrays中

int[] paramArrayOfInt1={1,2}; 
int[] paramArrayOfInt2={1,3}; 
if(paramArrayOfInt1.length==paramArrayOfInt2.length) { 
    if(!Arrays.equals(paramArrayOfInt1, paramArrayOfInt2)) { 
     System.out.println("False"); 
    } else{ 
     System.out.println("True"); 
    } 
    } else { 
     System.out.println("False"); 
    } 
+0

這樣做不行,元素需要和Array.equals匹配 –

+0

OP要查看'a'的所有元素是否都在' B'但不一定是相反的。這要求'a'和'b'完全相同_。 –

+0

不,這是行不通的。首先,我的array1和array2的長度不一樣。我知道這一點,但它不適用於我的代碼。 – Akumu

相關問題