我试图显示可以在水平和垂直方向找到的文件中的所有单词,并且尝试打印每个单词(行和列)的第一个字符的位置。
我可以水平显示每个单词,但不垂直显示。
这是我到目前为止使用的代码
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
)。目前,它只打印所有水平单词。
答案 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())
处理双倍空白(空字)。