【问题标题】:Returning a character element from a two dimensional array从二维数组中返回一个字符元素
【发布时间】:2014-06-07 03:38:42
【问题描述】:

我有一个方法可以根据输入坐标参数从二维字符串数组中返回一个字符元素。

public BattleShips(GameConfiguration config, Player player1, Player player2) {
    this.player1 = player1;
    this.player2 = player2;
    this.config = config;
    this.myBoardPlayer1= new char[20][20];
    this.myBoardPlayer2= new char[20][20];
}
protected char getCellState(int player, int x, int y) {
    if (isValidCoordinate(x,y) == true){
        if (player == 0){
            return this.myBoardPlayer1[x][y];
        }
        else if (player == 1){
            return this.myBoardPlayer2[x][y];
        }
    }
    else {
        return (char) -1;
    }
}

问题是上面的代码导致 eclipse 告诉我方法 getCellState() 没有返回 char 类型的结果,即使我已经将实例变量 myBoardPlayer1 和 myBoardPlayer2 初始化为 char[20][20]构造函数。

所以我的问题是:数组中字符元素的返回方法是否正确? 或者, this.myBoardPlayer1[x][y] 是否不被视为角色?如果不是,我该如何更改我的代码,以便 getCellState() 返回 this.myBoardPlayer1[x][y] 具有的任何字符值?

【问题讨论】:

  • return 取决于这个受保护的“char”getCellState,而不是您拥有的实例变量。所以你必须在每个 if 和 else 中返回一个 'char'。

标签: java arrays return character element


【解决方案1】:

问题在于编译器无法证明您的getCellState()总是返回一些东西(我想这是一个误导性的编译器错误)。

可能知道player01 如果isValidCoordinate() 返回true,但编译器无法读懂您的想法。它注意到在isValidCoordinate() 返回trueplayer 不是 01 并抱怨的情况下,您还没有说返回什么,因为一个方法return something 必须保证在所有情况下都返回一些东西,并且对于编译器,在某些情况下方法没有定义为返回一些东西。

因此,您可以将 else if 更改为常规 else,或添加另一个 else 大小写来定义如果 isValidCoordinate() 返回 trueplayer 不是 0 会发生什么或1.

【讨论】:

    猜你喜欢
    • 2011-12-30
    • 1970-01-01
    • 2021-03-16
    • 1970-01-01
    • 1970-01-01
    • 2016-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多