二维数组和方法调用

时间:2017-10-25 23:39:11

标签: java multidimensional-array

所以,我正在创建这个扫雷游戏,我对我的两个方法感到困惑,其中一个方法会用一定的角色初始化数组,一个方法实际上会打印游戏。这是我的代码:

public static void main(String[] args) {

    Scanner in = new Scanner(System.in);
    int a = 0;
    int b = 0;

    System.out.println("Welcome to Mine Sweeper!");

    a = promptUser(in, "What width of map would you like (3 - 20):", 3, 20);
    b = promptUser(in, "What height of map would you like (3 - 20):", 3, 20);

    eraseMap(new char[b][a]);
    simplePrintMap(new char[b][a]);
}

public static int promptUser(Scanner in, String prompt, int min, int max) {

    int userInput;
    System.out.println(prompt);
    userInput = in.nextInt();

    while (userInput < min || userInput > max) {
        System.out.println("Expected a number from 3 to 20.");
        userInput = in.nextInt();
    }
    return userInput;
}

public static void eraseMap(char[][] map) {

    for (int i = 0; i < map.length; ++i) {
        for (int j = 0; j < map[i].length; ++j) {
            map[i][j] = (Config.UNSWEPT);

        }
    }
    return;
}

public static void simplePrintMap(char[][] map) {

    for (int i = 0; i < map.length; ++i) {
        for (int j = 0; j < map[i].length; ++j) {
            System.out.print(map[b][a] + " ");

        }
        System.out.println();
    }
    return;
}

有问题的方法是eraseMap和simplePrintMap。 eraseMap应该用“。”初始化数组。而simplePrintMap应该实际打印数组。因此,如果我输入3和4,它将打印周期宽度为3,高度为4。

(每个时期以空格分隔)。

1 个答案:

答案 0 :(得分:0)

A)您创建了2个单独的map个。您在第一个上执行擦除,然后将其全部丢弃,创建一个新的map并打印出来。当然,这是空的。

尝试创建一个map并对其进行处理:

char[][] map = new char[b][a]
eraseMap(map);
simplePrintMap(map);
打印方法中的

B),使用错误的索引:

System.out.print(map[b][a] + " "); 

将这些更改为

System.out.print(map[i][j] + " ");

C)不是错误,只是一个提示:return;方法结束时您不需要void