파일 1의 단어 1과 파일 2의 단어 2의 유사성을 검증해야합니다. 단어 1 (파일 1)이 단어 2 (파일 2)와 같으면 파일 3이 True 및 False를 표시하는 출력이됩니다. 아래 코드가 있지만 오류가 있지만 출력을주지 않을 때 붙어있다. 자바 초보자입니다.두 파일에서 비슷한 단어 (문자열)를 찾으려면
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");
}
}
에 대한 나의 제안은 조금 더 :
귀하의 명확한 코드는 다음과 같이 보일 것인가? 읽을 수 없습니다. 또한 각 루프를 단계별로 디버깅하여 file3을 비교하거나 작성할 때 각 ArrayList 및/또는 변수가 보유하고있는 것을 정확히 확인해야합니까? – Jack
게시물을 편집하고 코드를 들여 쓰기하여 구조를 표시하십시오. 현재 상태에서는 읽을 수 없습니다. –
당신은 Levenshtein 거리를 조사하고 싶을지도 모른다. 이미 존재하는 Java 라이브러리/알고리즘이 있습니다. – Mike