Java实现Car类运行测试报double cannot be dereferenced错误求助
报错原因排查
java: double cannot be dereferenced 报错的核心逻辑是:你对Java的double基本类型执行了仅对象支持的解引用操作(比如调用方法、访问属性),结合本次Car类的实现要求,90%以上的概率是以下几个常见编码错误导致:
addFuel方法返回值类型写错:要求该方法返回当前Car对象的引用,如果你错误返回了燃油量这个double值,测试类执行链式调用(比如car.addFuel(20).drive(100))时,就会变成double值调用drive方法,直接触发该报错- getter方法返回值类型写反:要求的三个getter返回值都是
double类型,如果你误写为Car类型,或者测试类预期拿对象的地方你返回了double,都会触发该错误 - 多余调用基本类型方法:三个成员变量(燃油效率、燃油量、里程表)都是double基本类型,不要对它们执行类似
xxx.doubleValue()、xxx.intValue()这类调用,直接参与算数运算即可 - 构造方法赋值时多余类型转换操作:传入的构造参数本身就是double类型,不需要额外调用方法做转换
快速校验点
你可以对照以下要求快速核对代码:
addFuel方法的返回值类型必须是Car,方法最后一行写return this;,不要返回燃油量数值- 三个getter方法
getFuelEfficiency()、getOdometer()、getFuelLevel()的返回值类型都为double - drive方法逻辑符合要求:先计算当前燃油支持的最大行驶里程 = 燃油量 * 燃油效率,取传入的行驶距离和最大行驶里程的较小值为实际行驶里程,燃油量扣除 实际行驶里程 / 燃油效率,里程表累加实际行驶里程,最后返回实际行驶里程即可
内容的提问来源于stack exchange,提问作者Aleksandar Stojov
相关产品推荐
相关产品推荐

