Java编码出现int无法转换为boolean报错 JUnit测试不通过求助
Java代码报错排查与修复方案
核心报错cannot convert int to boolean原因
evenOrOdd方法中if (i2 /= 2)代码存在逻辑错误:/=是赋值运算符,执行后会返回int类型的计算结果,而Java语法要求if括号内必须是boolean类型的判断结果,因此触发类型转换报错。正确的偶数判断逻辑应该使用取模运算i2 % 2 == 0。
其余代码错误梳理
你当前的代码还有多处不符合需求和测试要求的问题:
- 四个方法的返回值类型全部错误:需求明确要求方法返回对应字符串,测试用例也是对方法返回值做断言,你声明的int、double返回类型不符合要求,且方法内只有打印语句没有return语句,会直接编译失败
positiveOrNegative判断逻辑错误:d1 >= 1的条件会漏掉0<d1<1的正数,不符合“大于0即为正数”的要求,正确判断条件应为d1 > 0isHello字符串比较逻辑错误:Java中使用==比较字符串只会对比对象内存地址,不会对比内容,应该使用equals方法做内容比较,同时可以避免空指针异常- 多处字符串拼写不匹配:比如
isFive方法中The Number is Five首字母大写和需求不一致,isHello方法中The word in not Hello把is错写为in
修复后完整代码
class PP31 { public static void main (String args[]) { } public static String isFive(int num1) { if (num1 == 5) { return "The number is Five"; } else { return "The number is not Five"; } } public static String positiveOrNegative(double d1) { if (d1 > 0) { return "Positive"; } else { return "Negative"; } } public static String evenOrOdd(int i2) { if (i2 % 2 == 0) { return "Even"; } else { return "Odd"; } } public static String isHello(String s1) { if ("Hello".equals(s1)) { return "The word is Hello"; } else { return "The word is not Hello"; } } }
修复后所有测试用例均可正常通过。
内容的提问来源于stack exchange,提问作者Sadged123
相关产品推荐
相关产品推荐

