Java 在二维数组中定位元素的坐标
我想我一定是弄丢了。 我试图定位二维数组中元素的坐标 我已经将代码简化为尽可能简单的代码,但仍然无法正确地完成它。 我对Java非常陌生 请告诉我为什么这个问题的答案总是42.0,不管我把“*”放在哪里Java 在二维数组中定位元素的坐标,java,arrays,Java,Arrays,我想我一定是弄丢了。 我试图定位二维数组中元素的坐标 我已经将代码简化为尽可能简单的代码,但仍然无法正确地完成它。 我对Java非常陌生 请告诉我为什么这个问题的答案总是42.0,不管我把“*”放在哪里 public static void main(String[] args) { locateStar(board); } static char[][] board = { { '.', '.', '.', '.' }, { '.', '.', '.', '.' },
public static void main(String[] args) {
locateStar(board);
}
static char[][] board = {
{ '.', '.', '.', '.' },
{ '.', '.', '.', '.' },
{ '.', '.', '.', '*' },
{ '.', '.', '.', '.' }
};
public static void locateStar(char[][] board) {
double star = 0;
for (int i = 0; i < board.length; i++) {
for (int j = 0; j < board[0].length; j++) {
if (board[i][j] == '*') {
star = board[i][j];
}
}
}
System.out.println(star);
}
publicstaticvoidmain(字符串[]args){
locateStar(董事会);
}
静态字符[][]板={
{ '.', '.', '.', '.' },
{ '.', '.', '.', '.' },
{ '.', '.', '.', '*' },
{ '.', '.', '.', '.' }
};
公共静态无效locateStar(字符[][]板){
双星=0;
对于(int i=0;i
仔细看这一行:
star = board[i][j];
您正在将char
分配给double
。值42
是星号*
的ASCII值。如果要打印坐标(这是两个值,而不仅仅是一个值),请尝试以下操作:
public static void locateStar(char[][] board) {
int x, y;
for (int i=0; i < board.length; i++) {
for (int j=0; j < board[0].length; j++) {
if (board[i][j] == '*') {
x = i;
y = j;
}
}
}
System.out.println("Found a star at (" + x + ", " + y + ")");
}
public static void locateStar(char[][]板){
int x,y;
对于(int i=0;i
啊哈,这有点滑稽:)你找到了星星,然后把星星赋给一个双倍的值:
star = board[i][j];
也就是说,将'*'
赋值给一个double,得到*字符的ASCII值,实际上是42
下面是一些代码,显示它已被找到:
for (int i = 0; i < board.length; i++) {
for (int j = 0; j < board[0].length; j++) {
if (board[i][j] == '*') {
System.out.println("Found at " + i + " " + j);
break;
}
}
}
for(int i=0;i
ASCII值42对应*符号。您的代码实际上是在检索值*,然后将其隐式转换为一个数字,该数字始终为42。无论位置如何,您都不会看到差异,因为您只查找“*”值,而不是它的位置或其他任何内容。Ahh您比我快了几秒钟:p我不应该格式化代码!啊哈,不用担心,这是常有的事。