Java字符串标记器检查数字

Java字符串标记器检查数字,java,stringtokenizer,Java,Stringtokenizer,这里是Java初学者,我正在尝试将中缀表达式转换为后缀表达式,但在理解如何检查StringTokenizer创建的标记是否为数字时遇到了困难。我尝试了tokens.equals方法,但意识到它不会有效,因为数字并不总是1位数 public String infixToPostfix() { Stack<String> s = new Stack<>(); String expression = jtfInfix.getText(); Strin

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

}
检查字符串是否是一个数字可能很棘手,因为有太多的情况。我不建议您自己编写代码,除非您计划接受简单的值,例如任意数字长度的正整数。要执行此简单检查,可以使用正则表达式:

token.matches("\\d+");
将匹配一个或多个数字

有关更复杂的匹配,如十进制值和负数,请参见

用法示例:

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