重写智能机器人方法:继承父类操作并实现步数统计
修正SmartRobot的步数统计逻辑
需求说明:
- 基于已有的
Robot类实现SmartRobot子类,禁止修改Robot类及相关类 - 重写机器人的所有移动方法,要求既执行父类的坐标变更操作,同时准确统计总移动步数
- 原实现中通过
getX()+getY()计算步数的方式存在错误:当机器人往返移动时(比如先向下再向上),坐标会抵消,但实际步数应该累加,因此需要修正统计逻辑
修正后的完整代码:
public class Main { public static void main(String[] args) { SmartRobot robot = new SmartRobot(); robot.moveDown(); robot.moveDown(); robot.moveLeft(); robot.moveUp(); robot.moveDown(); robot.moveLeft(); robot.moveLeft(); System.out.println("机器人坐标:" + robot.getX() + ":" + robot.getY()); System.out.println("步数统计:" + robot.getStepsCount()); } } class Robot { private int x; private int y; public void moveRight() { x++; } public void moveLeft() { x--; } public void moveUp() { y--; } public void moveDown() { y++; } public int getX() { return x; } public int getY() { return y; } } class SmartRobot extends Robot { private int stepCount = 0; @Override public void moveRight() { super.moveRight(); stepCount++; } @Override public void moveLeft() { super.moveLeft(); stepCount++; } @Override public void moveUp() { super.moveUp(); stepCount++; } @Override public void moveDown() { super.moveDown(); stepCount++; } public int getStepsCount() { return stepCount; } }
核心修正点:
- 在
SmartRobot中新增私有变量stepCount用于累计步数 - 重写每一个移动方法(
moveRight/moveLeft/moveUp/moveDown),先调用super执行父类的坐标变更,再将stepCount加1 getStepsCount直接返回累计的stepCount值,确保每一次移动都被准确统计,不受坐标往返影响
内容的提问来源于stack exchange,提问作者Elijah Morte
相关产品推荐
相关产品推荐

