这里是 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/