【问题标题】:2d-array error with the length长度的二维数组误差
【发布时间】:2017-10-07 11:37:03
【问题描述】:

我在这部分代码中遇到了一些问题 cols = input[0].length() ; 它对我说 1) 不能调用 int 原始类型的长度 2)长度无法解析或不是字段。 我正在为扫雷游戏编写代码,在这里我想用我拥有的文件中的索引填充网格。

public static void main(String[] args) {

    Scanner file = new Scanner ("in.txt");

    int line=0;
    int m = file.nextInt();
    int n = file.nextInt();
    int index = file.nextInt();

    int [][] input = new int[m][n];
    String.valueOf(input);

    for (int [] field : input) {
        printMineField(field);
    }
    file.close();
    line= line++;
}

private static void printMineField(int[] input) {


    int rows = input.length, cols = input[0].length ;
    int[][] grid = new int[rows][cols];


    for (int i = 0; i < rows; i++) {
        Arrays.fill(grid[i], 0);
    }
    //
}

【问题讨论】:

  • 提示:Java 不是 JavaScript。双重标记没有意义。然后长度是数组上的一个字段 - 而不是一种方法。所以放弃 () - 在问其他问题之前,一定要对这些基础知识进行一些研究。
  • 我是 java 新手,我正在尽力而为
  • 是的。但再说一遍:这是超级基础的,你应该在发帖之前做一些真正的研究。提示:在你的学习曲线的这一点上,你梦寐以求的任何问题都在这里提出。并回答了。

标签: java minesweeper


【解决方案1】:

第一个length 是数组中的一个字段,而不是一个函数。所以你应该使用cols = input[0].length; - 去掉那些括号。

接下来,您将一维数组传递给您的方法。你应该传递一个二维数组。

替换

private static void printMineField(int[] input) 

与:

private static void printMineField(int[][] input) 

那么你也需要更换

for (int [] field : input) {
    printMineField(field);
}

与:

printMineField(input);

【讨论】:

  • 我做到了,但仍然出现错误“无法在数组类型 int[] 上调用长度”
  • 你遇到了什么错误,你在哪里得到它?
  • 这是错误不能在数组类型 int[] 上调用长度,我在这一行得到它 int rows = input.length, cols = input[0].length() ;跨度>
  • 使用cols = input[0].length - 删除那些括号。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-29
  • 2012-07-30
相关资源
最近更新 更多