Java:条件语句的逻辑不起作用,即使不满足条件也允许程序运行

标签 java conditional-statements numberformatexception

我有以下两行代码,其中我为条件语句的执行设置了某些条件。但是,逻辑上有问题,因为即使不满足条件,条件内的程序也会运行。

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/

相关文章:

conditional-statements - 如何在LOGO中使用条件语句

java - 用于输入和输出的 EditText

java - 使用表值填充组合框

javascript - 在moment js中如何检查日期是否是过去的?

java - 设置代理?

java - 关于两个 worker 和一辆手推车的谜题。使用锁和条件不起作用

java - 运行两个连续的 java 测试时出现 Elasticsearch NumberFormatException

java - NumberFormatException 方法

Java:如何使容器的Jscrollpane背景不透明? (即透明)

java - 如何编写一个按钮,使其一开始呈灰色并禁用,直到填充 ImageView 为止?