Получить все слова из текстового файла (Java) - PullRequest
2 голосов
/ 15 апреля 2019

Я пытаюсь отобразить все слова в файле, который можно найти по горизонтали и вертикали, и я пытаюсь распечатать местоположение первого символа каждого слова (строки и столбца).

Я сделал так, чтобы каждое слово отображалось по горизонтали, но не по вертикали.

Это код, который я использовал до сих пор

public class WordFinder {
    public static final String WORD_FILE = "words.txt";
    public static void find(){
        try {
            File file = new File(WORD_FILE);
            Scanner scanner = new Scanner(file);
            while (scanner.hasNext() == true) {
                String s = scanner.next();
                System.out.println(s);
            }
            scanner.close();
        } catch (FileNotFoundException e) {
            System.out.println("File not found.");
    }
}

Он должен искать файл по горизонтали и вертикали, чтобы найти слова. Как только он находит слово, он должен отобразить местоположение первой буквы слова (например, grammar: row 8, position 1). В настоящий момент он просто печатает все горизонтальные слова.

1 Ответ

1 голос
/ 16 апреля 2019

Вы должны посчитать номер строки и положение слов во время итерации.Поэтому вы должны использовать scanner.hasNextLine() и scanner.nextLine().После этого вы можете разбить строку:

int lineNumber = 0;
while (scanner.hasNextLine()) {
    String line = scanner.nextLine();
    int positionNumber = 0;
    for (String word : line.split("\\s")) {
        if (!word.isEmpty())
            System.out.println(word + ": line " + (lineNumber + 1) + ", position " + (positionNumber + 1));
        positionNumber += word.length() + 1;
    }
    lineNumber++;
}

Это разбивает строку на все пробелы (\\s) и обрабатывает двойные пробелы (пустые слова) с помощью if (!word.isEmpty()).

...