Java 检查二维数组是否包含此字段或是否未定义
目前正在为我在大学的最后一个任务做一个小游戏。 我目前的问题是gameboard是一个Java 检查二维数组是否包含此字段或是否未定义,java,arrays,matrix,Java,Arrays,Matrix,目前正在为我在大学的最后一个任务做一个小游戏。 我目前的问题是gameboard是一个2D单元格数组(自制类)。电路板是用我读入的txt.file创建的。现在用户可以输入多个命令。一个命令是创建一个新的游戏对象,并使用特定的x和y参数将其放置在棋盘上。 除此之外,是否有任何方法可以检查字段是否足够大以容纳他们输入的参数: try { gameField.getField()[Integer parseInt(splittedCom[1])][Integer
2D单元格数组
(自制类)。电路板是用我读入的txt.file创建的。现在用户可以输入多个命令。一个命令是创建一个新的游戏对象,并使用特定的x和y参数将其放置在棋盘上。
除此之外,是否有任何方法可以检查字段是否足够大以容纳他们输入的参数:
try {
gameField.getField()[Integer
parseInt(splittedCom[1])][Integer
parseInt(splittedCom[2])].getStatus();
} catch (ArrayIndexOutOfBoundsException e) {
Terminal.printLine("Error, this cell isn't in the gameField");
}
我目前正在使用它来检查另一个命令。有没有一种方法可以毫无例外地使用它?因为你的数组已经构建好了,你应该已经有了数组的尺寸,所以你可以使用
gameBoard.length
表示宽度,gameBoard[0]。length
表示高度,并使用它们与用户提供的任何内容进行比较
编辑:根据您的问题:
如果可以访问
gameBoard
对象,则无需保存它们,因为这些信息可以通过gameBoard
对象本身获得。或者,您必须以某种方式坚持它们。请注意,尽管存储这些值会浪费一些额外内存,但抛出异常也会有代价,应该避免(在本例中)。期望用户提供错误值的情况不属于例外情况的标准,因为这是您期望的情况。检查输入,只要它适合您的游戏领域
boolean checker = false;
while(!checker){
if( /* check if the input is inside the gamefield */){
checker = true;
}
}
我还考虑过保存这两个长度,以便使用它们,但使用您的方法,在创建字段时保存长度将是一种“浪费”?我希望我的代码尽可能清晰和优化。你认为通过
gameBoard.length
和gameBoard[0]保存或访问它们更好吗?length
是更好的风格吗?@nhatniene:我已经更新了我的答案。您确实提出了一个正确的观点,但是您需要记住抛出异常的成本。谢谢您向我解释。帮了我很多忙@不客气。我对我的答案做了更多的修改,如果你再看一次可能会更好,以防万一。通常情况下,Integer.parseInt()NumberFormatException
可以用regex
检查,以避免使用异常,对吗?