1

これは、これに対するフォローアップの質問です

昨日この質問をしましたが、まだ解決されていませんが、コードにばかげた変更を加えて、一度だけコンパイルするようにしました (console.format()ステートメントをステートメントごとに置き換え、メソッドに 2 番目の引数としてSystem.out.print追加します)。nullreadLine()

幸いなことに、コードは実行されましたが、出力されますNo console.(明らかに、 にはコンソール デバイスがないためですJVM 参照) 。

では、Console クラスのオブジェクトによって表されるはずのコンソール デバイスを取得するにはどうすればよいでしょうか。


便宜上、前述のばかげた変更を行った後にコードを追加して実行します:-

import java.io.Console;
import java.util.regex.Pattern;
import java.util.regex.Matcher;

/*
 *  Enter your regex: foo
 *  Enter input string to search: foo
 *  I found the text foo starting at index 0 and ending at index 3.
 * */

public class RegexTestHarness {

    public static void main(String[] args){
        Console console = System.console();
        if (console == null) {
            System.err.println("No console.");
            System.exit(1);
        }
        while (true) {

            Pattern pattern = 
            Pattern.compile(console.readLine("%nEnter your regex: ", null));

            Matcher matcher = 
            pattern.matcher(console.readLine("Enter input string to search: ", null));

            boolean found = false;
            while (matcher.find()) {
                /*console.format("I found the text" +
                    " \"%s\" starting at " +
                    "index %d and ending at index %d.%n",
                    matcher.group(),
                    matcher.start(),
                    matcher.end());*/

                System.out.println("I found the text " + matcher.group() + " starting at index " + matcher.start() + " and ending at index " + matcher.end() + "."); 

                found = true;
            }
            if(!found){
                //console.format("No match found.%n", null);
                System.out.println("No match found."); 
            }
        }
    }
}
4

1 に答える 1