2016-12-13 3 views
0

.txtファイルから値をインポートして配列に入れますが、最終的に配列に格納される数値はファイルのものとは異なります。私はそれをどうやって修正できるのか分かりません。外部の.txtファイルの値がコンソールにインポートされたときに異なる

テキストファイルは、これらの値

2 
20.0 
10.0 
100 

にレイアウトされているファイルに値をインポートする方法は次のとおりです。

//variables global to the class 
    public static int level; 
    public static int hp; 
    public static double vigor; 
    public static double intelligence; 

public static void checkSaveState() throws IOException 
    { 
     //this method checks the save file for data 
     try 
     { 
      double[] savedGa = new double[4]; 
      BufferedReader saveFile = new BufferedReader(new FileReader("HRHeroSaveGame.txt")); 
      for (int i = 0; i < 4; i++) 
      { 
       savedGa[i] = saveFile.read(); 
      } 
      level = (int) savedGa[0]; 
      vigor = savedGa[1]; 
      intelligence = savedGa[2]; 
      hp = (int) savedGa[3]; 

      System.out.println("Level: " + level + " Vigor: " + vigor + " Intelligence: " + intelligence + " HP: " + hp); 
     } catch (FileNotFoundException e) { 
      System.out.println("Sorry, a save file couldn't be found for you."); 
     } 

    } 

出力は常にこのように終わる:

Level: 50 Vigor: 13.0 Intelligence: 10.0 HP: 50 

これが関連する場合は、これがファイルを作成した方法です。

public static void saveGame() throws IOException 
{ 
    PrintWriter saveFile = new PrintWriter(new FileWriter("HRHeroSaveGame.txt")); 
    saveFile.println(level); 
    saveFile.println(vigor); 
    saveFile.println(intelligence); 
    saveFile.println(hp); 
    saveFile.close(); 
} 
+0

健全性チェックを試みましたか?つまり、テキストファイルを手作業で作成し、それを読み込もうとしていますか? –

答えて

3

read()は、単一のcharを読み取ります。これはあなたの結果を説明します= 50 '2'、= 13 '\r''\n' = 10

あなたはStringとして各行を読んで、ダブルスを得るためにそれを解析する必要があります。

savedGa[i] = Double.parseDouble(saveFile.readLine()); 
1

BufferReaderのread()メソッドを読み込み、 charの整数表現であり、doubleまたはintへの完全な行のキャストではありません。

ちょうどこの

try 
     { 
      double[] savedGa = new double[4]; 
      BufferedReader saveFile = new BufferedReader(new FileReader("C:/test.txt")); 
      for (int i = 0; i < 4; i++) 
      { 
       savedGa[i] = Double.parseDouble(saveFile.readLine()); 
      } 
      level = (int) savedGa[0]; 
      vigor = savedGa[1]; 
      intelligence = savedGa[2]; 
      hp = (int) savedGa[3]; 

      System.out.println("Level: " + level + " Vigor: " + vigor + " Intelligence: " + intelligence + " HP: " + hp); 
     } catch (FileNotFoundException e) { 
      System.out.println("Sorry, a save file couldn't be found for you."); 
     } 

へのforループあなたを変更するには、この問題を解決するにはこれは文字列として行全体を読み込み、doubleにそれを解析します。

関連する問題