从二维数组返回一个字符元素

时间:2014-06-07 03:38:43

标签: java arrays return character element

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

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()即使我已经将实例变量myBoardPlayer1和myBoardPlayer2初始化为char [20] [20],也不会返回char类型的结果]在构造函数中。

所以我的问题:这是否正确了数组中字符元素的返回方法? 或者,这个.myBoardPlayer1 [x] [y]是不是被认为是一个角色?如果不是,我怎么能改变我的代码,以便getCellState()返回this.myBoardPlayer1 [x] [y]有的任何字符值?

1 个答案:

答案 0 :(得分:1)

问题在于,编译器无法证明您的getCellState()总是返回一些内容(我猜想会误导编译器错误)。

如果player返回0

可能知道1isValidCoordinate()true,但编译器可以&# 39;读你的想法。它注意到,如果isValidCoordinate()返回trueplayer 不是 {{1},则您还没有说明要返回的内容}或0并且抱怨,因为必须保证返回某些东西的方法在所有情况下都返回一些东西,并且在某些情况下,该方法没有被定义为返回某些内容。

因此,您可以将1更改为常规else if,或添加其他else案例,以定义else返回isValidCoordinate()时会发生什么情况true不是player0