在java对象中查找,如何扫描所有输入?

时间:2013-03-20 21:29:39

标签: java java.util.scanner

我正在对findInLine对象进行测试,但它不起作用,我不知道为什么。 这是代码:

public static void main(String[] args) {

    Scanner input = new Scanner(System.in);
    System.out.print("enter string: ");
    String a = null;
    String pattern ="(,)";

    if (input.findInLine(pattern) != null){

        a = input.nextLine();

    }
    System.out.println(a);

enter string: (9,9) <---------- that is what i wrote

这是output: 9)

如果我想要变量a将获得我写的所有字符串,我需要做的是:a = (9,9)而不是a = 9)

2 个答案:

答案 0 :(得分:0)

你需要在正则表达式中转义括号。现在正则表达式与逗号匹配。

此外,您应该意识到Scanner.findInLine()也会在输入上前进。

尝试

String pattern = "\\([0-9]*,[0-9]*\\)";
String found = input.findInLine(pattern);
System.out.println(found);

验证这一点。

答案 1 :(得分:0)

无论我理解什么。您想要输入一些字符串,如果该字符串与您的模式匹配,则需要在控制台中显示该字符串。这将为您提供正确的输出。

import java.util.Scanner;

public class InputScan {

    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);
        String a;
        System.out.print("enter string: ");
        String pattern = "\\(\\d+,\\d+\\)"; // Its regex
        // For white spaces as you commented use following regex
        // String pattern = "\\([\\s+]?\\d+[\\s+]?,[\\s+]?\\d+[\\s+]?\\)";
        if ((a = input.findInLine(pattern)) != null){
            System.out.println(a);
        }
    }
}

Java Regex Tutorial

Scanner findInLine()

输入:

(9,9)

输出:

(9,9)