2016-05-22 24 views
0

私はそれを失うに違いないと思います。 2次元配列内の要素の座標を検索しようとしています。2次元配列の要素の座標を見つける

私はできるだけシンプルにコードを書き留めましたが、それでも正しいことはできません。 私はこれに対する答えは常に42.0である理由私は

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); 
} 

答えて

4

「*」を置くに関係なく、この行をよく見て、教えてくださいJavaの

に非常に新しいです:

star = board[i][j]; 

chardoubleに割り当てています。値42は、アスタリスク*のASCII値です。あなたはを印刷したい場合は(二つの値だけではなく、1である)を調整し、その後、これを試してみてください。

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 + ")"); 
} 
+0

あなたは数秒で私を倒しました:Pコードをフォーマットしてはいけません! – AkiRoss

+0

ありがとうございました。私は非常にばかだと分かっています。あなたは私の正気を救った! – user4824195

2

それはちょっとおかしいAHAH :)あなたは星を見つけ、そしてあなたが星を割り当てますdouble値:ある

star = board[i][j]; 

は、あなたがある*文字の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; 
     } 
    } 
} 
+0

ありがとう;)はい、ハハ。私は馬鹿だ – user4824195

+0

ああ、心配しない、それは起こる。 – AkiRoss

2

ASCII値42は*記号に対応します。あなたのコードは効果的に値*を取得してから、暗黙的に数値にキャストします。常に42になります。ポジションに関係なく、 '*'値だけを探しているので位置または何か他のもの。

関連する問題