Java 字符串标记器检查数字



这里的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;
        }
    }
}

检查String是否为数字可能很棘手,因为情况太多了。我不建议自己编写代码,除非你打算接受简单的值,比如正整数(任何数字长度(。要执行此简单检查,您可以使用正则表达式:

token.matches("\d+");

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

有关更复杂的匹配(如十进制值和负数(,请参阅如何在 Java 中检查字符串是否为数字。


用法示例:

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

相关内容

  • 没有找到相关文章

最新更新