Java 跟踪正在扫描的当前行
我正在使用扫描仪扫描命令提示符下的输入,我需要跟踪特定单词所在的行。如果通过命令提示输入此输入: “第一行 现在是第二行 最后一行“ 我想把它打印出来: 单词:第一行:1 字:行:1 单词:现在行:2 单词:第二行:2 字:行:2 单词最后一行:3 最后一行字:3 字行:3“ 这是我的密码:Java 跟踪正在扫描的当前行,java,regex,java.util.scanner,Java,Regex,Java.util.scanner,我正在使用扫描仪扫描命令提示符下的输入,我需要跟踪特定单词所在的行。如果通过命令提示输入此输入: “第一行 现在是第二行 最后一行“ 我想把它打印出来: 单词:第一行:1 字:行:1 单词:现在行:2 单词:第二行:2 字:行:2 单词最后一行:3 最后一行字:3 字行:3“ 这是我的密码: public static void main (String [] args){ Scanner scan = new Scanner(System.in); int lineNum =
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的增量,但没有成功,我觉得必须有一个非常简单的方法来实现这一点,我只是没有找到它。如果我理解你的问题,那么是的。你可以在阅读每一行的同时,将每一行中的单词拆分为
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.
}
Scanner scan=新的扫描仪(System.in);
int lineNum=1;
while(scan.hasNextLine()){
String line=scan.nextLine();
String[]words=line.split(\\s+);
for(字符串字:字){
System.out.printf(“单词:%s行:%d%n”,单词,lineNum);
}
lineNum++;//最简单的方法就是放弃使用Scanner
进行分词
阅读整行,然后使用String.split(“”
将行拆分为单词
如果您非常喜欢在所有方面都坚持使用扫描仪
,您可以使用一个扫描仪
阅读下一行,然后使用另一个扫描仪
对您刚刚阅读的内容进行断字:
String wholeLine = scan.nextLine();
Scanner innerScan = new Scanner(wholeLine);
lineNum++;
while (innerScan.hasNext())
System.out.println("Word: " + innerScan.next() + " line: " + lineNum);
这样就不用担心String.split()的正则表达式了
请尝试一次读取一行。