Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用扫描仪在线计数元素_Java - Fatal编程技术网

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

如果我在Java中使用的是
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面向对象