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

Java中如何将用户输入匹配到二维数组同名Champion对象并实现选择移动

当然可以通过遍历二维数组来实现这个需求!这其实是处理网格型角色选择非常直观的一种方式,我来给你拆解下具体怎么做:

实现思路与步骤

核心逻辑就是通过遍历网格,把所有非null的Champion对象筛选出来,再提供给用户选择——毕竟用户只能操作实际存在的角色嘛。

1. 遍历数组收集可选择的角色

你可以用嵌套循环遍历整个10×10的网格:外层循环处理行(对应y坐标),内层循环处理列(对应x坐标),每次遇到非null的Champion,就把它加入候选列表,同时可以把角色信息展示给用户参考。

举个Java示例(你可以根据自己使用的语言调整):

List<Champion> selectableChamps = new ArrayList<>();
Champion[][] grid = new Champion[10][10]; // 你的二维网格数组

// 嵌套遍历整个网格
for (int y = 0; y < grid.length; y++) {
    for (int x = 0; x < grid[y].length; x++) {
        Champion currentChamp = grid[y][x];
        if (currentChamp != null) {
            selectableChamps.add(currentChamp);
            // 打印角色选项,让用户清楚看到可选角色和位置
            System.out.printf("选项%d:%s(位置:x=%d, y=%d)%n", 
                selectableChamps.size(), currentChamp.name, currentChamp.x, currentChamp.y);
        }
    }
}

2. 处理用户选择并获取目标角色

收集完候选列表后,就可以引导用户输入选项编号,再从列表中取出对应的Champion对象。记得要做简单的合法性校验,避免用户输入无效值。

示例代码片段:

Scanner scanner = new Scanner(System.in);
System.out.print("请输入你要移动的角色编号:");
int userChoice = scanner.nextInt();

// 校验输入是否合法
if (userChoice < 1 || userChoice > selectableChamps.size()) {
    System.out.println("无效的选择,请重新输入!");
    // 这里可以加循环逻辑,让用户重新输入直到合法
} else {
    Champion selectedChamp = selectableChamps.get(userChoice - 1); // 列表是0索引,要减1
    System.out.printf("你已选择要移动的角色:%s%n", selectedChamp.name);
    // 接下来就可以编写这个角色的移动逻辑了
}

额外优化小建议

  • 因为你的网格只有10×10,遍历的性能完全不用顾虑;如果是超大网格,再考虑优化存储方式(比如单独维护一个角色列表,不用每次遍历)。
  • 可以给Champion加一个唯一ID,避免出现重名角色时用户混淆。
  • 遍历展示时按行顺序输出,用户更容易对应网格上的实际位置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 07:56:42