1

以下代码是我从 doc.oracle 站点复制的完美代码。它在 netbeans 中编译没有任何错误,但输出是:

没有控制台。Java 结果:1

我应该怎么做才能让控制台正常工作。是否需要对 netbeans 设置进行任何调整?尽管我在 IDE netbeans 中的 java 编程方面有一些经验,但我很困惑。我正在使用最新版本的 JDK 和 Netbean。

公共类 RegexTestHarness {

/**
 * @param args the command line arguments
 */
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: "));

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

        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());
            found = true;
        }
        if(!found){
            console.format("No match found.%n");
        }
    }
}

}

4

3 回答 3

4

我正在使用最新版本的 JDK 和 Netbeans。

NetBeans 使用自己的控制台,因此根本没有系统控制台。尝试在终端上运行它,它应该可以工作。

于 2013-11-12T09:46:58.033 回答
2

Javadoc

如果这个虚拟机有一个控制台,那么它由这个类的一个唯一实例表示,可以通过调用该System.console()方法获得。如果没有可用的控制台设备,则该方法的调用将返回null

NetBeans 没有System.console().

System.in用来读和写System.out

于 2013-11-12T09:47:37.153 回答
1

为子孙后代

public class RegexTestHarness {

public static void main(String[] args) throws IOException{


    while (true) {

        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
        System.out.println("\nEnter your regex:");

        Pattern pattern = 
        Pattern.compile(br.readLine());

        System.out.println("\nEnter input string to search:");
        Matcher matcher = 
        pattern.matcher(br.readLine());

        boolean found = false;
        while (matcher.find()) {
            System.out.format("I found the text" +
                " \"%s\" starting at " +
                "index %d and ending at index %d.%n",
                matcher.group(),
                matcher.start(),
                matcher.end());
            found = true;
        }
        if(!found){
            System.out.println("No match found.");
        }
    }
}
}
于 2015-04-20T13:46:48.673 回答