数组中的单个元素

时间:2014-09-28 21:08:45

标签: java arrays for-loop stringtokenizer

我接受了涉及两个阵列的练习。例如:

String [] array1 = { "Tv","Iphone","Pc" };
String [] array2 ={"Tv" , "Pc"}

(实际上,这些数组可能包含来自文件的数百个元素。)

  1. 我需要找到所有元素/元素?在第二个数组中存在/不存在的第一个数组。我在考虑使用for循环或StringTokenizer。我只需要使用数组来解决这个问题。

  2. 如何在第二个数组中添加一些原始int来表示我错过了这些数据。

2 个答案:

答案 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