Java字符串标记符检查数字

时间:2018-04-08 21:33:07

标签: java stringtokenizer

这里初学者到Java,我正在尝试将中缀表达式转换为后缀表达式,但我无法理解如何检查StringTokenizer创建的令牌是否为数字。我尝试了tokens.equals()方法,但意识到它不会有效,因为数字并不总是1位数。

public String infixToPostfix() {

    Stack<String> s = new Stack<>();

    String expression = jtfInfix.getText();
    String delims = "+-*/() ";

    StringTokenizer strToken = new StringTokenizer(expression, delims, true); 

    String postFix = "";

    while (strToken.hasMoreTokens()) {
        String token = strToken.nextToken();
        // if the next token is a number, append it to the result
        if (token!=delims) {
            postFix += token;
        }
    }

}

1 个答案:

答案 0 :(得分:1)

检查String是一个数字可能会很棘手,因为案例很多。除非您计划接受简单的值,例如正整数(任何数字长度),否则我不建议您自己编写代码。要进行这种简单的检查,您可以使用正则表达式:

token.matches("\\d+");

这将匹配一个或多个数字(数字)。

对于更复杂的匹配(例如十进制值和负数),请参阅How to check if a String is numeric in Java

使用示例:

"1".matches("\\d+");      // true
"1057".matches("\\d+");   // true
"".matches("\\d+");       // false
"1.0".matches("\\d+");    // false
"-1".matches("\\d+");     // false