我正在研究一种方法,该方法将二维数组,字符和2个整数作为输入,给出数组中字符的位置。每当阵列在我试图访问的位置,或者每当我试图访问超出界限的位置时,我都必须抛出异常。 Java给我一个与我编写代码的方式有关的奇怪错误。我不知道如何从二维数组访问某个元素。我附上了我的代码截图和我得到的异常。 先感谢您! Here is the image
答案 0 :(得分:0)
最好将代码和Exception直接复制并粘贴到monospace formatting
的问题正文中,以便于阅读。
期望在charAt
对象上调用String
函数。 char[][]
数组不是String对象,因此代码不会成功编译。根据您对Java的熟悉程度,您可能希望了解类对象(例如String
类的实例)与基本类型数组(例如char
)之间的区别。 / p>
解释数组的教程页面:https://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html
解释课程的教程页面: https://docs.oracle.com/javase/tutorial/java/javaOO/index.html
如果您尝试从二维char
数组访问char[][]
,只需将其视为访问数组阵列即可。 char[x]
会为您提供"行"包含您想要的元素,char[x][y]
将为您提供该行中的特定元素" row"元素。
答案 1 :(得分:0)
由于您的数组是char数组,因此您不需要board.charAt[x][y]
board[x][y]
。此外,finally
位始终执行,因此如果您为x
或y
添加非法值,您仍会收到错误消息。此外,您不是将变量c
引用的字符写入数组,而是将字符(字母)c写入电路板。
您可以使用带有if
的第二个else
语句将字符放入数组中,并完全避免使用finally
。
if(board[x][y] != ' ') throw new IllegalArgumentException("Your message");
else board[x][y] = c;
应该进入您获得的第一个if
。
另一种方法是在catch
之后使用try
,因为尝试访问数组外部的元素无论如何都会抛出Exception
。