我按下输入时扫描仪不起作用

时间:2015-02-20 14:19:39

标签: java

我正在使用java,我的代码如下:

Scanner scanner = new Scanner(System.in);
    while (true) {
        String token = scanner.next();
        if (token.equals("$")) break;
        if (token.equals("(")) do sth;
        else if (token.equals(")")) do sth;
        else {
            do sth
        }
    }

正如你在上面的代码中看到的那样,如果你在控制台中输入sth然后你在结尾处输入$,那么程序将理解输入的结束,扫描仪可以成功地获得字符串的每个单词但是我想要当用户按下输入时,扫描仪抓住整个字符串并开始逐字逐句地读取它,我就这样试了:

Scanner scanner = new Scanner(System.in);
    while (scanner.hasNext()) {
        String token = scanner.next();
        if (token.equals("(")) builder.buildOpenBracket();
        else if (token.equals(")")) builder.buildCloseBracket();
        else {
            int number = Integer.parseInt(token);
            builder.buildElement(number);
        }
    }

但现在proram永远运行,没有任何事情发生

2 个答案:

答案 0 :(得分:0)

首先,要读取新行并将其保存在字符串中,您应该使用 .nextLine()

答案 1 :(得分:0)

无论如何我以这种方式解决了这个问题:

Scanner scanner = new Scanner(System.in);
    String token = scanner.nextLine();
    Scanner scannerToken = new Scanner(token);
    while (scannerToken.hasNext()) {
        String statement = scannerToken.next();
        if (statement.equals("("))

        else if (statement.equals(")"))

        else {

        }
    }