我接受了涉及两个阵列的练习。例如:
String [] array1 = { "Tv","Iphone","Pc" };
String [] array2 ={"Tv" , "Pc"}
(实际上,这些数组可能包含来自文件的数百个元素。)
我需要找到所有元素/元素?在第二个数组中存在/不存在的第一个数组。我在考虑使用for
循环或StringTokenizer
。我只需要使用数组来解决这个问题。
如何在第二个数组中添加一些原始int来表示我错过了这些数据。
答案 0 :(得分:0)
// Variables
String [] array1 = {"a", "b", "c", "d"};
String [] array2 = {"a", "c", "e"};
String [] distinct = new String[array1.length];
int i, j, k = 0;
boolean match;
// Search
for (i = 0; i < array1.length; i++) {
match = false;
for (j = 0; j < array2.length; j++) {
if (array1[i].equals(array2[j])) { match = true; break; }
}
if (!match) { distinct[k] = array1[i]; k++; }
}
// Output
for (i = 0; i < k; i++) {
System.out.println(distinct[i]); // b, d
}
答案 1 :(得分:0)
以这两个数组为例:
String[] arr1 = new String[] {"A", "B", "C", "D", "E"};
String[] arr2 = new String[] {"A", "C", "D"};
好吧,只使用数组,我会做这样的事情:
首先,创建一个方法来查看数组是否包含某个值:
public boolean aContainsB(String[] a, String b) {
for (String s : a) if (s.equals(b)) return true;
return false;
}
然后,创建一个与最大数组一样大的新数组。它将保存不在数组中的值。我假设它可能是每一封信。
String[] notFound = new String[Math.max(arr1.length, arr2.length)];
然后,遍历第一个数组,如果当前值不在第二个数组中,则将其附加到未找到的数组。
int i = 0;
for (String s : arr1) if (!aContainsB(arr2, s)) notFound[i++] = s;
在这结束时,我将包含第二个数组中不存在多少个值,并且您可以遍历notFound数组i次以将其打印出来。
System.out.println("There are " + i + " elements in arr1 that are not in arr2, they are:");
for (int j = 0; j < i; j++) {
System.out.println("The String: " + notFound[j]);
}
输出将是:
There are 2 elements in arr1 that are not in arr2, they are:
The String: B
The String: E