2016-06-17 4 views
-1

In dem Programm, das ich schreibe, habe ich eine Klasse Map und innerhalb dieser Klasse ist eine Funktion coord genannt, die die Kartenkoordinate des angegebenen Punkts zurückgibt.Funktion, die nichts zurückgibt, wenn es Zeichen zurückgeben sollte

Map Klassendefinition:

public class Map 
{ 
    public static char map[][] = new char[150][150]; 

    public static char coord(Point locat) 
    { 
      if ((locat.v <= 0) || (locat.h <= 0)) 
        return '\u0000'; 
      return map[locat.v-1][locat.h-1]; 
    } 

    public static int readToArray(String filePath) 
    { 
      try (InputStream in = new FileInputStream(filePath); 
       BufferedReader from = new BufferedReader(new InputStreamReader(in))) { 
        int c, h, v; 
        h = v = 0; 

        while ((c = from.read()) != -1) { 
         if (c == '\n') { 
          v++; 
          h = 0; 
         } else { 
          map[v][h++] = (char) c; 
         } 
        } 

        in.close(); 
        return v; 

      } catch (IOException x) { 
        System.err.println(x); 
      } 
      return -1; 
    } 
    /* blah blah blah */ 
} 

Point Klassendefinition:

public class Point 
{ 
    public int h, v; 
    /* blah blah blah */ 
} 

Die Map Klasse ist statisch. Meine main Funktion ruft readToArray auf.

Ich fügte printf s hinzu, um zu finden, dass die coord Funktion die Fehlerüberprüfung übergibt, aber die char zurückgegebene ist leer. Warum ist das und was soll ich tun, um es zu ändern?

+2

Wie können Sie erwarten, dass jemand anderes dies reproduziert? 1) Wir haben keine Ahnung, was in der Eingabedatei ist und gehen damit in das char [] [] Array, 2) Sie geben uns nicht die Hauptmethode, die readToArray aufruft. Bitte lesen Sie http://stackoverflow.com/help/mcve –

+1

** NIE ** nennen Sie Ihre Klasse * Karte * –

Antwort

0

Ihre Funktion zum Abrufen von Werten aus dem Array gibt \u0000 zurück, wenn die Indizes schlecht sind. Das char, glaube ich, zeigt nichts, wenn gedruckt, nicht einmal ein Leerzeichen. So druckt es eine char, nur eine, die eigentlich nicht bedeutet, dass nichts angezeigt wird.