2016-05-22 13 views
0

Ich denke, ich muss es verlieren. Ich versuche, die Koordinaten eines Elements in einem 2D-Array zu finden.Lokalisieren Koordinaten des Elements in 2D Array

Ich habe den Code so einfach wie ich konnte verdummt und immer noch nicht richtig. Ich bin sehr neu in Java

Bitte sagen Sie mir, warum die Antwort auf diese Frage immer 42.0, egal, wo ich die ‚*‘

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

Antwort

4

Schauen Sie genau auf dieser Linie:

star = board[i][j]; 

Sie weisen einem double zu. Der Wert 42 ist der ASCII-Wert eines Sterns *. Wenn Sie aus drucken möchten die Koordinaten (das sind zwei Werte, nicht nur eine), dann versuchen Sie dies:

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

Ahh du schlägst mich um ein paar Sekunden: P Ich hätte den Code nicht formatieren sollen! – AkiRoss

+0

Vielen Dank. Ich weiß, dass ich sehr dumm bin. Du hast meine geistige Gesundheit gerettet !!! – user4824195

2

Ahah es irgendwie lustig :) Sie den Stern, und Sie den Stern ein zuweisen double-Wert:

star = board[i][j]; 

das heißt, Sie zuweisen '*' zu einem doppelten, den ASCII-Wert des Zeichens * erhalten, die - in der Tat - 42.

Hier einige Code, der zeigt, dass es gefunden:

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

Danke;) Ja, haha. Ich bin ein Idiot – user4824195

+0

ahah keine Sorgen, es passiert. – AkiRoss

2

Der ASCII-Wert 42 entspricht dem Symbol *. Ihr Code ruft den Wert * ab und wandelt ihn implizit in eine Zahl um, die immer 42 ist. Sie werden keinen Unterschied sehen, unabhängig von der Position, weil Sie nur nach dem Wert * suchen und nicht nach dem Wert Position oder irgendetwas anderes.