反向波兰符号挑战 - Boolean.getBoolean() 与 Boolean.parseBoolean()

Reverse Polish Notation Challenge - Boolean.getBoolean() vs. Boolean.parseBoolean()

我正在尝试解决这个问题: https://uchicago.kattis.com/problems/uchicago.rpn

我已经 post编辑了下面的 Java 代码以供参考。

编辑:我删除了原始代码,因为它太长而且没有太大帮助。我认为这个 post 对未来的读者可能会有用,如果它可以作为一个能够强调 Java 中 getBoolean() 和 parseBoolean() 函数之间区别的实际示例。可以找到进一步的说明 here。从下面的代码可以看出,该错误与 getBoolean() 和 parseBoolean() 有关,其中 val1 和 val2 是布尔类型,而不是字符串名称。

boolean bool1 = Boolean.getBoolean(val1);// Should be using parseBoolean(val1)
boolean bool2 = Boolean.getBoolean(val2);// Should be using parseBoolean(val2)
                        
String result = booleanHelper(bool1, bool2, next);

经过进一步测试,我认为您遇到的唯一错误是使用 Boolean.getBoolean 而不是 Boolean.parseBoolean 解析布尔值 "true" 和 "false"。这会导致输入的错误答案,例如 true true and(答案:false)。

Boolean.getBoolean 将读取具有给定名称的系统 属性 并尝试将其解析为布尔值,而不是您的字符串 "true" 和 "false".