从文本文件(Java)获取所有单词

时间:2019-04-15 17:02:10

标签: java file loops java.util.scanner word

我试图显示可以在水平和垂直方向找到的文件中的所有单词,并且尝试打印每个单词(行和列)的第一个字符的位置。

我可以水平显示每个单词,但不垂直显示。

这是我到目前为止使用的代码

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 个答案:

答案 0 :(得分:1)

您必须在迭代时计算单词的行号和位置。因此,您应该使用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())处理双倍空白(空字)。