我有一个方法,可以根据输入坐标参数从二维字符串数组中返回一个字符元素。
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]有的任何字符值?
答案 0 :(得分:1)
问题在于,编译器无法证明您的getCellState()
将总是返回一些内容(我猜想会误导编译器错误)。
player
返回0
, 您可能知道1
是isValidCoordinate()
或true
,但编译器可以&# 39;读你的想法。它注意到,如果isValidCoordinate()
返回true
而player
不是 {{1},则您还没有说明要返回的内容}或0
并且抱怨,因为必须保证返回某些东西的方法在所有情况下都返回一些东西,并且在某些情况下,该方法没有被定义为返回某些内容。
因此,您可以将1
更改为常规else if
,或添加其他else
案例,以定义else
返回isValidCoordinate()
时会发生什么情况true
不是player
或0
。