我必須驗證文件1中的字1與文件2中的字2的相似性,等等。如果單詞1(文件1)。等於單詞2(文件2),則文件3將是輸出以顯示真和假。下面是編碼,但當沒有錯誤但沒有輸出時,我卡住了。我是JAVA的初學者。要找到兩個文件中的相似字(字符串)
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Scanner;
public class test2 {
private static ArrayList<String> load(String f1) throws FileNotFoundException {
Scanner reader = new Scanner(new File(f1));
ArrayList<String> out = new ArrayList<String>();
while (reader.hasNext()) {
String temp = reader.nextLine();
String[] sts = temp.split(" ");
for (int i = 0; i < sts.length; i++) {
if (sts[i].equals("") && sts[i].equals(" ") && sts[i].equals("\n")) {
out.add(sts[i]);
}
}
}
return out;
}
private static void write(ArrayList<String> out, String fname) throws IOException {
FileWriter writer = new FileWriter(new File("out_test2.txt"));
for (int i = 0; i < out.size(); i++) {
writer.write(out.get(i) + "\n");
}
writer.close();
}
public static void main(String[] args) throws IOException {
ArrayList<String> file1;
ArrayList<String> file2;
ArrayList<String> out = new ArrayList<String>();
file1 = load("IbanDict.txt");
file2 = load("AFF_outVal.txt");
for (int i = 0; i < file1.size(); i++) {
String word1 = file1.get(i);
for (int z = 0; z < file2.size(); z++) {
if (word1.equalsIgnoreCase(file2.get(z))) {
boolean already = false;
for (int q = 0; q < out.size(); q++) {
if (out.get(q).equalsIgnoreCase(file1.get(i))) {
already = true;
}
}
if (already == false) {
out.add(file1.get(i));
}
}
}
}
write(out, "out_test2.txt");
}
}
你可以格式化你的代碼的建議好一點?這很難閱讀。另外 - 你有沒有調試通過你的每一個循環,看看每個ArrayList和/或變量持有比較或寫入file3時保持什麼? – Jack
請編輯您的文章並縮進代碼以顯示結構。它目前的狀態是不可讀的。 –
你可能想看看Levenshtein距離。有一些Java庫/算法已經存在。 – Mike