Java报错Result of method is ignored的原因及解决方法
报错含义解析
两个报错属于关联的代码提示,具体含义如下:
- Result of 'barkingDog.shouldWakeUp()' is ignored:出现在
main方法的方法调用行,意为你调用了带布尔返回值的shouldWakeUp方法,但既没有把返回值赋值给变量,也没有用这个返回值做打印、逻辑判断等任何操作,方法返回的结果被直接丢弃。 - Return value of the method is never used:出现在
shouldWakeUp方法定义行,意为该方法声明了布尔类型的返回值,但所有调用该方法的位置都没有使用过这个返回值,返回值的设计没有产生实际作用。
除此之外你的代码还存在逻辑bug:没有优先过滤非法时间参数,当传入的小时值小于0或大于23时(比如barking=true, hourOfDay=-1),会被错误判定为满足“早8点前”的条件返回true,不符合业务预期。
修复方案
- 调用
shouldWakeUp方法后,对返回值做实际使用(赋值给变量、打印输出、作为判断条件都可以),即可消除上述两个报错。 - 调整方法内部判断顺序,优先校验时间参数的合法性,修正运算符优先级可能导致的逻辑错误,同时可以简化冗余的分支判断,类名遵循Java大驼峰命名规范做调整。
修正后的可运行代码如下:
public class BarkingDog { public static void main(String[] args) { // 接收方法返回值并打印,使用返回值消除报错 boolean wakeUpResult1 = shouldWakeUp(true, 1); System.out.println("凌晨1点狗叫是否需要起床:" + wakeUpResult1); // 直接在打印语句中调用方法,同样属于使用返回值 System.out.println("晚上23点狗叫是否需要起床:" + shouldWakeUp(true, 23)); System.out.println("传入非法时间-1是否需要起床:" + shouldWakeUp(true, -1)); } public static boolean shouldWakeUp(boolean barking, int hourOfDay) { // 先校验时间参数合法性,非法时间直接返回false if (hourOfDay < 0 || hourOfDay > 23) { return false; } // 时间合法时,狗叫且时间在22点后到早8点前,返回true需要起床 return barking && (hourOfDay < 8 || hourOfDay > 22); } }
代码运行输出结果:
凌晨1点狗叫是否需要起床:true 晚上23点狗叫是否需要起床:true 传入非法时间-1是否需要起床:false
内容的提问来源于stack exchange,提问作者Krishna Agarwal
相关产品推荐
相关产品推荐

