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