Java实现Vehicle类模拟车辆移动 按位置生成对应数量空格
现有代码问题梳理
- 未实现要求的无参构造方法
Vehicle() - 现有带参构造方法逻辑错误:构造方法无返回值无需return,且未按照要求校验传入的loc参数范围赋值
forward()、backward()边界判断逻辑错误,会导致位置超出-20~20的范围toString()未实现空格加@的输出逻辑
修正后的完整Vehicle类代码
public class Vehicle { private int location; // 无参构造方法 public Vehicle() { this.location = 0; } // 带参构造方法 public Vehicle(int loc) { if (loc >= -20 && loc <= 20) { this.location = loc; } else { this.location = 0; } } public void forward() { // 只有当前位置小于20才能前移,避免超出上限 if (location < 20) { location++; } } public void backward() { // 只有当前位置大于-20才能后移,避免超出下限 if (location > -20) { location--; } } public int getLocation() { return location; } public String toString() { // 空格数计算规则:当前位置 - (-20) = location + 20,和示例要求完全匹配 int spaceCount = location + 20; return " ".repeat(spaceCount) + "@"; } }
低版本JDK兼容方案
如果你的JDK版本低于11,不支持String.repeat()方法,可以把toString()替换为循环拼接实现:
public String toString() { int spaceCount = location + 20; StringBuilder sb = new StringBuilder(); for (int i = 0; i < spaceCount; i++) { sb.append(" "); } sb.append("@"); return sb.toString(); }
内容的提问来源于stack exchange,提问作者Suii1
相关产品推荐
相关产品推荐

