Java 字符串标记器检查数字

标签 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;
        }
    }

}

最佳答案

检查 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

关于Java 字符串标记器检查数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49722985/

相关文章:

java - 循环期间堆栈上发生了什么?

java - -Xlint 重新编译。为什么默认不开启?

java - 如何在类中找到特定按钮。该按钮可能与该类之外的其他按钮共享类名

java - 为短数据类型分配十六进制值

java - StringTokenizer 不显示数字末尾的 0

java - StringTokenizer 中的多个字符串分隔符

java - 当 Thread.currentThread().getContextClassLoader() 返回 null 时,这是怎么回事?

java - 字符串分词器问题

java - 分割字符串并保存到对象列表

Java - 计算文件中的字数、行数和字符数