在线使用扫描仪计数元素

时间:2014-02-20 17:12:04

标签: java

如果我在Java中使用Scanner,我如何计算该行上的元素,以便我知道如果它没有所需的元素或继续下一行,则不处理输入?都是整数。这不是作业。

示例输入:

1 <-- ignore
1 2 3 <-- use this
1 2 <-- ignore

2 个答案:

答案 0 :(得分:2)

一次读一行,然后自己将其拆分为元素。

 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()

答案 1 :(得分:1)

有点晚了但是,或者,您也可以使用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();
    }

希望这有助于某人:)