我正在编写一个基本程序来比较两个数组中的数据。订单并不重要,也没有重复的数字。输出当前表示阵列数据是相同的。由于阵列数据不同,这不是我想要发生的。这是我现在的代码:
public class Algorithm1{
public static void main (String[] args){
int[] array1 = {1, 2, 3};
int[] array2 = {1, 2, 3, 4, 5, 6};
int matchCount = 0;
boolean match = false;
for(int j = 0; j < array1.length;j++) {
for(int i = 0; i < array2.length;i++){
if(array1[j] == array2[i])
matchCount++;
}
}
if(matchCount >= array1.length && matchCount >= array2.length)
match = true;
if(match = true){
System.out.println("The data in the arrays is the same.");
}
else if(match = false){
System.out.println("The data in the arrays is different.");
}
}
}
答案 0 :(得分:0)
只需将if(match = true)
替换为if(match == true)
,或者更简单,if(match)
,您应该没事;)
您写道:
if(match = true) {
System.out.println("The data in the arrays is the same.");
}
实际上if(match = true)
:
match
设置为true
true
...并输入if
:)作为旁注,我想指出您不需要在else
子句中指定if(match == false)...因为如果我们输入{{1 }},它已经意味着else
(即:match != true
)。
干杯!
答案 1 :(得分:0)
这是一个相当简单的错误,许多开始的程序员都会这样做。比较两个对象时,使用==
,设置时使用=
而不是:
if(match = true){
System.out.println("The data in the arrays is the same.");
}
else if(match = false){
System.out.println("The data in the arrays is different.");
}
应该是:
if(match == true){
System.out.println("The data in the arrays is the same.");
}
else if(match == false){
System.out.println("The data in the arrays is different.");
}
嗯,实际上,它非常多余。说if(match == true)
就像说if(match)
一样,无论怎样,在else
部分,如果匹配不成立,那么它必须是假的,所以说{{1}是无关紧要的。您只需要说else if(match == false)
。
以下是我所做的修订应该是什么:
else
答案 2 :(得分:0)
您可以在库中使用一种方法。 Collections.indexOfSubList(List source, List target
public int findArray(Integer[] arg1, Integer[] arg2)
{
return Collections.indexOfSubList(Arrays.asList(arg1), Arrays.asList(arg2));
}
答案 3 :(得分:0)
尝试使用此代码,如果您需要更多解释,请告知我们
O(nlogn)运行时如果您感兴趣:)如果您使用哈希或集合...它将是O(n)但空间复杂度更高
import java.io.*;
import java.util.Arrays;
class Ideone
{
public static void main (String[] args) throws java.lang.Exception
{
int[] array1 = {1, 2, 3, 6, 5, 4, 3};
int[] array2 = {1, 2, 3, 4, 5, 6, 4, 4,6};
java.util.Arrays.sort(array1);
java.util.Arrays.sort(array2);
boolean match = true;
int ptr1 = 0;
int ptr2 = 0;
while(ptr1<array1.length && ptr2<array2.length && array1[ptr1]==array2[ptr2])
{
ptr1++;ptr2++;
while(ptr1<array1.length && array1[ptr1]==array1[ptr1-1])
{
ptr1++;
}
while(ptr2<array2.length && array2[ptr2]==array2[ptr2-1])
{
ptr2++;
}
}
if((ptr1 == array1.length) && (ptr2 == array2.length))
System.out.println("The data in the arrays is the same");
else
System.out.println("The data in the arrays is the different");
}
}