2016-06-17 8 views
-1

私が書いているプログラムでは、Mapというクラスがあり、そのクラス内にはcoordという関数があり、与えられたポイントのマップ座標を返します。返すときに何も返さない関数

Mapクラス定義:

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クラス定義:

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

Mapクラスは静的です。私のmain関数はreadToArrayを呼び出します。

printfを追加して、coord関数がエラーチェックをパスしたが、返されたcharが空であることがわかりました。なぜこれが、私はそれを変更するために何をすべきですか?

+2

他の誰かがこれを再現することをどのように期待できますか? 1)入力ファイルに何が入っていて、char [] []配列に入っているのかわからない、2)readToArrayを呼び出すメインメソッドを与えていない。 http://stackoverflow.com/help/mcve –

+1

を読んでください**決してあなたのクラスに名前をつけない*地図* –

答えて

0

インデックスが不正な場合、配列から値を取得する関数は\u0000を返します。そのcharは、印刷されたときには何も表示せず、スペースでさえも表示しません。したがって、charを印刷していますが、実際に何も表示されないことを意味するものは1つだけです。

関連する問題