2014-01-18 278 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

相关问题