我有一种方法可以很好地工作并给出期望的结果。这是代码:
public class arraycomparison {
public static void main(String args[]) {
try {
Scanner sc1 = new Scanner(new FileInputStream("/Users/esna786/File1.txt"));
Scanner sc2 = new Scanner(new FileInputStream("/Users/esna786/File2.txt"));
List<String> File1Content = new ArrayList<String>();
List<String> File2Content = new ArrayList<String>();
List<String> commonWords = new ArrayList<String>();
//Getting the contents of File1
while (sc1.hasNext()) {
File1Content.add(sc1.next());
}
String arr1[] = File1Content.toArray(new String[File1Content.size()]);
//Getting the contents of File1
while (sc2.hasNext()) {
File2Content.add(sc2.next());
}
String arr2[] = File2Content.toArray(new String[File2Content.size()]);
int count = 0;
for (int i = 0; i < arr1.length; i++) {
for (int j = 0; j < arr2.length; j++) {
if (arr1[i].equals(arr2[j])) {
commonWords.add(arr1[i]);
count++;
}
}
}
String[] comWords = commonWords.toArray(new String[commonWords.size()]);
System.out.println("Total Number of Common Words are: "+comWords.length);
for (int i = 0; i < comWords.length; i++) {
System.out.println(i + 1 + ": " + comWords[i]);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
它就是
Total Number of Common Words are: 7
1: apple
2: ball
3: cat
4: duck
5: elephant
6: fan
7: goat
BUILD SUCCESSFUL (total time: 0 seconds)
当我在下面运行与上面几乎相同的程序代码时,使用相同的文件:
//Counting the number of matched words
public int getCommonWords(File File1, File File2) throws IOException {
try {
Scanner sc1 = new Scanner(new FileInputStream(File1));
Scanner sc2 = new Scanner(new FileInputStream(File1));
List<String> File1Content = new ArrayList<String>();
List<String> File2Content = new ArrayList<String>();
List<String> commonWords = new ArrayList<String>();
//Getting the contents of File1
while (sc1.hasNext()) {
File1Content.add(sc1.next());
}
String arr1[] = File1Content.toArray(new String[File1Content.size()]);
//Getting the contents of File1
while (sc2.hasNext()) {
File2Content.add(sc2.next());
}
String arr2[] = File2Content.toArray(new String[File2Content.size()]);
int count = 0;
for (int i = 0; i < arr1.length; i++) {
for (int j = 0; j < arr2.length; j++) {
if (arr1[i].equals(arr2[j])) {
commonWords.add(arr1[i]);
count++;
}
}
}
String[] comWords = commonWords.toArray(new String[commonWords.size()]);
System.out.println("Total Number of Common Words are: " + comWords.length);
for (int i = 0; i < comWords.length; i++) {
System.out.println(i + 1 + ": " + comWords[i]);
}
} catch (Exception e) {
e.printStackTrace();
}
return 0;
}
它在输出区域中显示以下内容:
run:
Total words of File1.txt are: 11
Total Number of Common Words are: 11
1: apple
2: ball
3: cat
4: duck
5: elephant
6: fan
7: goat
8: a
9: b
10: c
11: d
它甚至还显示不匹配的单词,为什么会这样呢?请帮忙。
如果要保留逻辑和数据结构,请使用以下方法:
String commonWords[] = new String [Math.min(arr1.length, arr2.length)];
它远非完美,但可以让您为数组分配值。
然后打印:
for(String str : commonWords) {
if (str != null) {
System.out.println(str);
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句