Java-программа, объединяющая строки путем перекрытияJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Java-программа, объединяющая строки путем перекрытия

Сообщение Anonymous »

Привет, я пытался создать программу на Java, которая считывает файл .txt, а затем разделяет каждую строку пробелами на подстроки, причем содержимым файла являются буквы и/или цифры. Затем он проверяет подстроки каждой строки отдельно и находит самое длинное перекрытие из двух подстрок, но перекрытие происходит либо от начала одной строки вправо, либо от конца другой строки влево и наоборот. Затем он объединяет их вместе, но таким образом, чтобы не дублировать перекрывающуюся часть, и продолжается до тех пор, пока не будет повторно собрана строка, и продолжается до следующей, пока не останется больше строк для чтения. Пример: «886 68814 8688», самое большое перекрытие — «688», поэтому «68814» и «8688» объединяются в «868814», затем следующим шагом является проверка следующего по величине перекрытия двух строк, которые теперь равны «886». " и "868814" перекрываются в "86" и объединяются в "8868814", завершают эту строку и проверяют следующую строку, а после завершения последней строки выдают результат другого файла .txt с объединенными строками в каждой строке. Заранее извините за грамматику.

Код: Выделить всё

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class ReassembleTheFragmentedLines {
// Method to find the maximum common part between two strings from both ends
public static String findMaxCommonPart(String str1, String str2) {
String maxCommonPart = "";
for (int i = 1; i  maxCommonPart.length()) {
maxCommonPart = commonPart;
maxCommonPartIndex = j;
}
}
}

if (maxCommonPartIndex != -1) {
assembledLine.append(parts.get(maxCommonPartIndex).substring(maxCommonPart.length()));
} else {
assembledLine.append(parts.get(i));
}
}

return assembledLine.toString();
}

public static void main(String[] args) {
try (BufferedReader reader = new BufferedReader(new FileReader("file.txt"));
BufferedWriter writer = new BufferedWriter(new FileWriter("reassembled.txt"))) {

String line;
while ((line = reader.readLine()) != null) {
String[] partsArray = line.split(" ");
List parts = new ArrayList();
for (String part : partsArray) {
parts.add(part);
}

String reassembledLine = reassembleLine(parts);
writer.write(reassembledLine);
writer.newLine();
}

System.out.println("Reassembled the file in reassembled.txt");
} catch (IOException e) {
e.printStackTrace();
}
}
}
Я пробовал это с файлом file.txt, содержащим «886 68814 8688» в одной строке, однако в результате в повторно собранном файле.txt он возвращает только «8868888688». Любая помощь будет оценена по достоинству.

Подробнее здесь: https://stackoverflow.com/questions/784 ... by-overlap
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»