0

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)

4

2 に答える 2

0

正規表現で括弧をエスケープする必要があります。これで、正規表現はコンマに一致します。

Scanner.findInLine()また、入力も進んでいることに気付くはずです。

試す

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

これを確認します。

于 2013-03-20T21:40:05.087 に答える
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 正規表現のチュートリアル

スキャナ findInLine()

入力:

(9,9)

出力:

(9,9)
于 2013-03-20T21:58:31.357 に答える