【问题标题】:Accessing specific element from two dimensional character array从二维字符数组访问特定元素
【发布时间】:2017-11-05 19:15:35
【问题描述】:

我正在研究一种方法,该方法将二维数组、一个字符和 2 个整数作为输入,给出该字符在数组中的位置。每当我尝试访问的位置的数组已满时,或者每当我尝试访问超出范围的位置时,我都必须抛出异常。 Java 给了我一个关于我如何编写代码的奇怪错误。我不确定如何从二维数组中访问某个元素。我附上了我的代码截图和我得到的异常。 先感谢您! Here is the image

【问题讨论】:

  • 不要将文本/代码发布为图像/链接 (more info)。使用edit 选项更正您的帖子。
  • 当您致电borad.charAt[x][y] 时,您期望发生什么?为什么不只是 board[x][y] 就像你在它后面写了几行一样?
  • 另外,您不应该尝试运行甚至无法编译的代码。

标签: java arrays exception


【解决方案1】:

最好将代码和异常直接复制并粘贴到带有monospace formatting 的问题正文中,以便于阅读。

charAt 函数预计将在 String 对象上调用。 char[][] 数组不是 String 对象,因此代码不会成功编译。根据您对 Java 的熟悉程度,您可能需要了解类对象(例如 String 类的实例)和原始类型数组(例如 char)之间的区别。

解释数组的教程页面: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] 将为您提供该“行”元素中的特定元素。

【讨论】:

    【解决方案2】:

    由于您的数组是 char 数组,因此您无需将 board.charAt[x][y] 放入 board[x][y] 即可。同样finally 位总是被执行,所以如果你为xy 输入非法值,你仍然会得到一个错误。此外,您不是将变量c 引用的字符写入数组,而是将字符(字母)c 写入棋盘。 您可以使用带有else 的第二个if 语句将字符放入数组中并完全避免finally

    if(board[x][y] != ' ') throw new IllegalArgumentException("Your message");
    else board[x][y] = c;
    

    它应该进入你得到的第一个if。 另一种方法是在try 之后使用catch,因为尝试访问数组外部的元素无论如何都会抛出Exception

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-09
      • 1970-01-01
      相关资源
      最近更新 更多