Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 返回true的二维、一维整数数组_Java_Arrays - Fatal编程技术网

Java 返回true的二维、一维整数数组

Java 返回true的二维、一维整数数组,java,arrays,Java,Arrays,我们即将进行期末考试,这只是一个学习问题,但我在将它们放入eclipse时编写的两个数组有问题。我想了解一些可能对考试有帮助的信息,谢谢 编写一个Java函数,该函数接受两个一维整数数组,当且仅当第一个数组中的所有整数都包含在第二个数组中,并且第二个数组中的所有整数都包含在第一个数组中时,才返回true 公共类Two1dimensionalArraysMain { 公共布尔主(int[]array1,int[]array2) { 对于(inti=0;i我认为最好的解决方案是使用集合等式,如果

我们即将进行期末考试,这只是一个学习问题,但我在将它们放入eclipse时编写的两个数组有问题。我想了解一些可能对考试有帮助的信息,谢谢


编写一个Java函数,该函数接受两个一维整数数组,当且仅当第一个数组中的所有整数都包含在第二个数组中,并且第二个数组中的所有整数都包含在第一个数组中时,才返回true


公共类Two1dimensionalArraysMain
{
公共布尔主(int[]array1,int[]array2)
{

对于(inti=0;i我认为最好的解决方案是使用集合等式,如果允许的话

public static boolean checkArraysContainSameElements(int[] array1, int[] array2) { 
    Set<Integer> set1 = new HashSet<Integer>();
    for (int x : array1) set1.add(x);
    Set<Integer> set2 = new HashSet<Integer>();
    for (int x : array2) set2.add(x);
    return set1.equals(set2);

}
公共静态布尔校验数组包含相同元素(int[]array1,int[]array2){
Set set1=新的HashSet();
对于(int x:array1)set1.add(x);
Set set2=新的HashSet();
对于(int x:array2)set2.add(x);
返回set1.equals(set2);
}

除此之外,我想看看您提出的解决方案有什么问题。

问题是您过早返回了
false

下面是您试图执行的操作。您查看
array1
中的每个元素X。然后将该元素与
array2
中的每个元素进行比较。如果X等于
array2
中的任何元素,则您是优秀的(到目前为止)您可以查看
array1
中的下一个元素。但如果X与
array2
中的每个元素不同,则返回
false

这是一个很好的方法。问题是,如果X与
array2
中的任何元素不同,则返回false,而不是如果X与每个元素不同,则返回false。这是因为只要看到两个数组中不同的两个元素,就立即返回
false

public boolean main(int []array1, int []array2) 
{
    for(int i=0;i<10;i++)
    {
        for(int j=0;j<10;j++)
        {
                if(array1[i]==array2[j]) 
                {
                    break;
                }
                else if (array1[i] != array2[j])
                    return false;
        }
    return true;
    }
}
public boolean main(int[]array1,int[]array2)
{

对于(int i=0;i,您可以对数组进行排序并在循环中进行比较:

public boolean checkArrayEquality(int[] source, int[] target)
{
    Arrays.sort(source);
    Arrays.sort(target);

    if(source.length == target.length)
    {
        for (int i = 0; i < target.length; i++)
        {
            if(source[i] != target[i])
            {
                return false;
            }
        }
    }
    else
    {
        return false;
    }

    return true;
}
公共布尔checkArrayQuality(int[]源,int[]目标)
{
数组。排序(源);
数组。排序(目标);
if(source.length==target.length)
{
for(int i=0;i
可能会对它们进行排序,然后在一个循环中进行比较谢谢你,这非常清楚地解释了它们背后的概念以及答案本身的正确流程,我希望他们正在寻找一般概念,并且我们知道它应该是嵌套for循环构造中的两个数组,但有50个问题和4个问题在一个小时内,我不认为他们会过分挑剔,只要我们能证明我们已经掌握了相关的流程。-如果我能投票,我会投票给你们所有人,感谢你们的帮助:)
public boolean checkArrayEquality(int[] source, int[] target)
{
    Arrays.sort(source);
    Arrays.sort(target);

    if(source.length == target.length)
    {
        for (int i = 0; i < target.length; i++)
        {
            if(source[i] != target[i])
            {
                return false;
            }
        }
    }
    else
    {
        return false;
    }

    return true;
}