所以,我正在创建这个扫雷游戏,我对我的两个方法感到困惑,其中一个方法会用一定的角色初始化数组,一个方法实际上会打印游戏。这是我的代码:
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。
(每个时期以空格分隔)。
答案 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
。