You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

重写智能机器人方法:继承父类操作并实现步数统计

修正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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 16:10:28