【发布时间】:2020-04-25 18:19:41
【问题描述】:
嗨,基本上我正在尝试制作扫雷的初学者版本,但我有点卡住了。 我能够进入我有一个 2d 字符数组的阶段,而'*' 表示我的,而 ^ 没有。我被卡住的部分是用围绕它的地雷数量来改变“^”,我的代码所做的是返回一个二维数组,但不是数字,而是奇怪的问号。
这是我的功能。
static char[][] calculatemines(char[][] h) {
int height = h.length;
int width = h[0].length;
char[][] newh = new char[height][width];
for (int i = 0; i < newh.length; i++) {
for (int j = 0; j < newh[0].length; j++) {
if(h[i][j]=='*') {
newh[i][j]='*';
} else
newh[i][j]= (char) numberofmines(h,height,width);
}
}
return newh;
}
这是第二个功能
private static int numberofmines(char[][] f, int height, int width) {
int numberofmines = 0;
for (int i = 0; i < height; i++) {
for (int j = 0; j < width; j++) {
int iStart = Math.max(0, i - 1);
int iEnd = Math.min(height, i + 1);
int jStart = Math.max(0, j - 1);
int jEnd = Math.min(width, j + 1);
for (int squareI = iStart; squareI < iEnd; squareI++) {
for (int squareJ = jStart; squareJ < jEnd; squareJ++) {
if (f[squareI][squareJ] == '*') {
numberofmines++;
}
}
}
}
}
return numberofmines;
}
感谢大家的帮助:)
【问题讨论】:
-
您正在投射一个整数,例如5 到一个字符 - 这将是它的 ascii 值。有关更多信息,请参阅 asciitable。通常每当你在施法时,你都做错了。
标签: java arrays char 2d minesweeper