【问题标题】:When I try to return the index values of an item in a multidimensional array, I do not get numbers. I get a weird set of characters. Why?当我尝试返回多维数组中某个项目的索引值时,我没有得到数字。我得到了一组奇怪的字符。为什么?
【发布时间】:2014-10-10 00:36:33
【问题描述】:

我在下面有这段代码,它应该返回多维数组中项目的索引值。但是,当我运行它时,它反而给了我这个:

Found at: [I@7ea987ac

    public static String findWord(char[][]board, String word) {
            for (int row = 0; row < board.length; row++) {
                for (int col = 0; col < board[row].length; col++) {
                    if (board[row][col] == word.charAt(0)) {
                        return "Found at: " + new int[] {row,col};
                    }
                }
            }
            return "Not found.";
        }

代码没有返回正确的索引值有什么问题?

【问题讨论】:

  • 你正在打印数组对象,默认返回对象内存分配,如果你想打印它应该返回“Found at:”+row+“,”+col};
  • 尝试使用java/util/Arrays.toString(int[]) 打印它。即return "Found at: " + java/util/Arrays.toString(new int[] {row,col});

标签: java multidimensional-array indexing return


【解决方案1】:

您将数组作为字符串返回,因此您将获得该数组返回的默认 toString(),对您而言,[I@7ea987ac,其中 [I 表示一个 int 数组,而数字是数组的 hashCode。

解决方案:不要将数组作为字符串返回,而是提取所需的字符串数据并返回。

而是返回类似的东西:

return String.format("Found at [%d, %d]", row, col);

【讨论】:

    【解决方案2】:

    你从数组中得到默认的toString(),你可以改变这个

    return "Found at: " + new int[] {row,col};
    

    Arrays.toString(int[]) 与类似的东西一起使用

    return "Found at: " + Arrays.toString(new int[] {row,col});
    

    【讨论】:

      猜你喜欢
      • 2014-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-16
      • 1970-01-01
      • 1970-01-01
      • 2021-09-28
      • 2017-11-22
      相关资源
      最近更新 更多