Java 使用扫描仪在线计数元素
如果我在Java中使用的是Java 使用扫描仪在线计数元素,java,Java,如果我在Java中使用的是Scanner,那么如何计算行中的元素,以便在没有所需元素的情况下不处理输入,或者继续到下一行?都是整数。这不是家庭作业 输入示例: 1 <-- ignore 1 2 3 <-- use this 1 2 <-- ignore 1一次读一行,然后自己把它分成几个元素 while(scanner.hasNextLine()) String line = scanner.nextLine(); String[] elements = l
Scanner
,那么如何计算行中的元素,以便在没有所需元素的情况下不处理输入,或者继续到下一行?都是整数。这不是家庭作业
输入示例:
1 <-- ignore
1 2 3 <-- use this
1 2 <-- ignore
1一次读一行,然后自己把它分成几个元素
while(scanner.hasNextLine())
String line = scanner.nextLine();
String[] elements = line.split(" ");
if(elements.length ==3) {
process(elements);
} else {
// deal with it somehow
}
}
。。。或者使用稍有不同的逻辑(因为它在完成时返回null),您可以使用BufferedReader.readLine()稍微晚一点,但也可以使用Scanner#findInLine
来实现所需的行为我编写了一个示例来测试您的输入
Scanner s = new Scanner(new File("text"));
Pattern p = Pattern.compile("^(\\d+) (\\d+) (\\d+)$", Pattern.MULTILINE);
while(s.hasNextLine()){
if(s.findInLine(p)!=null){
//just printing the result. you can do needful here.
MatchResult result = s.match();
System.out.println("full line:" + result.group(0));
System.out.println("individuals");
for (int i=1; i<=result.groupCount(); i++)
System.out.println(result.group(i));
}
s.nextLine();
}
Scanner s=新的扫描仪(新文件(“文本”);
Pattern p=Pattern.compile(“^(\\d+)(\\d+)(\\d+)$”,Pattern.MULTILINE);
而(s.hasNextLine()){
如果(s.findInLine(p)!=null){
//只是打印结果。你可以在这里做需要的事情。
MatchResult结果=s.match();
System.out.println(“整行:+result.group(0));
系统输出打印号(“个人”);
对于(int i=1;iInteger输入仅由空格分隔,因此输入可能位于不同的行上。您需要输入一个字符串并对其进行分析。将每行扫描为字符串,在空格上拆分,检查数组大小。如果输入有效,则在转换为整数并处理时遍历数组。如果是1 2 3 4,则?@Sanjeev:忽略该t面向对象