我正在使用扫描程序从命令提示符扫描输入,我需要跟踪特定单词的行。如果我通过命令提示输入此输入:
“第一行
现在第二行
最后一行“
我希望它打印出来:
“Word:第一行:1
Word:line line:1
Word:现在行:2
Word:第二行:2
Word:line line:2
Word最后一行:3
单词最后一行:3
字线:3“
这是我的代码:
public static void main (String [] args){
Scanner scan = new Scanner(System.in);
int lineNum = 1;
while(scan.hasNext())
{
if(scan.next().matches("[\\n]")
lineNum++;
System.out.println("Word: " + scan.next() + " line: " + lineNum);
}
}
我尝试了许多不同的正则表达式图案,但我尝试过的似乎没有尝试过。我已经尝试了一些其他方法来增加计数器,例如scan.hasNextLine的增量,但没有成功,我觉得必须有一个非常简单的方法来做到这一点,我只是没有找到它。
答案 0 :(得分:0)
如果我理解你的问题,那么是的。您可以在Scanner.hasNextLine()
时读取每一行,然后用
Scanner scan = new Scanner(System.in);
int lineNum = 1;
while (scan.hasNextLine()) {
String line = scan.nextLine();
String[] words = line.split("\\s+");
for (String word : words) {
System.out.printf("Word: %s line: %d %n", word, lineNum);
}
lineNum++; // <-- then increment the line count.
}
答案 1 :(得分:0)
最简单的方法是放弃使用Scanner
进行破解!
阅读整行,然后使用String.split(" ")
将该行划分为单词。
如果你已经热衷于坚持Scanner
所有方面,你可以使用一个Scanner
阅读下一行,然后使用另一个Scanner
来做这个词打破了你刚读到的内容:
String wholeLine = scan.nextLine();
Scanner innerScan = new Scanner(wholeLine);
lineNum++;
while (innerScan.hasNext())
System.out.println("Word: " + innerScan.next() + " line: " + lineNum);
这使您免于担心String.split()
的正则表达式。