我有以下两行代码,其中我为条件语句的执行设置了某些条件。但是,逻辑上有问题,因为即使不满足条件,条件内的程序也会运行。
if (!(token.equals('+')) && !(token.equals('-')) && !(token.equals('*')) && !(token.equals('/'))) {
operandStack.push(Integer.valueOf(token));
}
我在这段代码的第二行收到一个 java.lang.NumberFormatException: For input string: "whatever operator (+,-,* and/) that I Enter in my test case",我意识到这是因为 Integer.valueOf() 不适用于符号,但事实就是如此。如果它是一个符号,那么它一开始就不应该被执行。我尝试过寻找各种拼写错误或愚蠢的语法错误,但没有发现任何错误。这个逻辑有什么问题吗?
最佳答案
您可能会更好地通过正则表达式检查 token 是否为整数:
if (token.matches("\\d+")) {
operandStack.push(Integer.parseInt(token));
}
然后将字符串解析为整数。
模式\d+
(Java 的双重转义)匹配一位或多位数字。
关于Java:条件语句的逻辑不起作用,即使不满足条件也允许程序运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46800683/