作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
嗨,基本上我正在尝试制作扫雷的初学者版本,但我有点卡住了。我能够到达这样的阶段:我有一个二维字符数组,而“*”表示我的,而 ^ 则不然。我陷入困境的部分是用周围的地雷数量更改“^”,我的代码所做的是返回一个二维数组,但我得到的不是数字,而是奇怪的问号。
这是我的功能。
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;
}
感谢您的帮助:)
最佳答案
这是因为您将 numberofmines()
中的 int 转换为 char,这意味着您将得到 ASCII value 。您可以添加 48('0'
的 ASCII 值为 48)来获取原始数字
newh[i][j] = (char)(numberofmines(h,height,width) + 48);
编辑:
您不需要迭代 numberofmines()
中的所有数组,只需迭代周围的单元格
else {
newh[i][j] = (char)(numberofmines(h, h.length, h[0].length, i, j) + 48);
}
private static int numberofmines(char[][] f, int height, int width, int i, int j) {
int iStart = Math.max(0, i - 1);
int iEnd = Math.min(height, i + 2);
int jStart = Math.max(0, j - 1);
int jEnd = Math.min(width, j + 2);
// ...
}
关于java - 计算二维数组JAVA中单元格周围的地雷数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59642034/
我有一个 C 程序的问题,其中给出了一个带有地雷的二维数组(地雷 = 数组字段设置为 1)。我需要找到从 (0,0) 到 (x-1,y-1) 的最短路径,并且您只能在 4 个方向(上、下、左、右)上移
我是一名优秀的程序员,十分优秀!