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

Java中如何获取新放置数字在二维数组中的行列位置?

问题解决与代码修正

你的returnLocation方法编译失败主要有两个核心问题:

  • 类型不匹配错误:board[row]是一个int[]数组,而rowAndColumn[0]是int类型,直接赋值会导致编译报错
  • 逻辑方向完全错误:你应该将找到的行/列索引赋值给rowAndColumn数组,而不是修改原board数组

修正后的代码

public static int[] returnLocation(int[][] board, String columnInput, int randomNumber) {
    int[] rowAndColumn = new int[2];
    // 把列字母转成对应的索引,避免重复的if判断
    int columnIndex = switch (columnInput) {
        case "A" -> 0;
        case "B" -> 1;
        case "C" -> 2;
        case "D" -> 3;
        case "E" -> 4;
        case "F" -> 5;
        default -> -1; // 非法输入的默认值,可根据需求处理
    };

    if (columnIndex != -1) {
        for (int row = 0; row < board.length; row++) {
            if (board[row][columnIndex] == 0) {
                // 给结果数组赋值:第一个元素是行索引,第二个是列索引
                rowAndColumn[0] = row;
                rowAndColumn[1] = columnIndex;
                break; // 找到第一个空位就停止循环,和putNumber逻辑一致
            }
        }
    }
    return rowAndColumn;
}

关键修正点说明

  1. 简化列索引转换:用switch表达式替代重复的if判断,代码更简洁易维护
  2. 修正赋值逻辑:将找到的行号row赋值给rowAndColumn[0],列索引赋值给rowAndColumn[1],完全反转了你原来的错误赋值方向
  3. 添加循环终止条件:找到第一个空位后立即break,和putNumber方法的逻辑保持一致,避免无效遍历
  4. 非法输入处理:增加了默认分支处理无效列输入,避免数组越界

如果你的Java版本低于14,不支持switch表达式,可以换成传统switch语句:

int columnIndex = -1;
switch (columnInput) {
    case "A": columnIndex = 0; break;
    case "B": columnIndex = 1; break;
    case "C": columnIndex = 2; break;
    case "D": columnIndex = 3; break;
    case "E": columnIndex = 4; break;
    case "F": columnIndex = 5; break;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 19:20:20