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

如何编写Java Cricket类中void类型的retirePlayer球员退役方法

原代码问题梳理

你目前写的retirePlayer方法逻辑错误主要有三点:

  1. 没有提前判断目标球员的退役状态,不管什么情况都直接把对应位置的值改为-1,不符合需求要求
  2. 校验逻辑完全错误:你写的判断条件是查找数组里有没有值等于入参id的元素,和「判断对应id的球员是否已经退役」的要求完全不匹配
  3. 多余的循环逻辑:playerIds数组的下标就对应球员id,不需要遍历整个数组就能直接读写对应位置的状态值
正确实现代码
@Override
public void retirePlayer(int id) {
    // 校验id合法性,避免数组越界(如果题目要求不需要校验可以删掉这部分)
    if (id < 0 || id >= playerIds.length) {
        System.out.println("无效的球员id");
        return;
    }
    // 已经退役的情况
    if (playerIds[id] == -1) {
        System.out.println("Player already retired");
    } 
    // 未退役的情况
    else {
        playerIds[id] = -1;
        System.out.println("Player with id: " + id + " has retired");
    }
}
逻辑说明

构造方法里已经把playerIds所有元素初始化为1,代表所有球员初始都是现役状态,-1代表退役状态。方法执行逻辑如下:

  • 首先校验传入的id是否在0-10的合法范围内(数组长度为11,下标从0开始),避免抛出数组越界异常
  • 直接通过playerIds[id]拿到对应球员的状态,若已经是-1则直接打印已退役提示
  • 若状态为1代表现役,将状态修改为-1后打印退役成功提示

内容的提问来源于stack exchange,提问作者Martsoft Filmz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 22:15:05