2017-12-16 20 views
0

書いているコードでメソッドに問題があります。私は基本的には、このメソッドがテキストファイル内の整数を別のメソッド(setStrength、setAccuracyなど)に渡すようにします。下のソースコードとテキストファイルが添付されています。できるだけお手伝いください。ありがとうございました!オブジェクトが文字列を適切な整数フォーマットではない、請求整数に文字列を解析しようとしたときテキストファイルの読み込みJava、数値書式例外

public static void loadGame(String loadFileName) { 

    System.out.println(); 

     try { 
      System.out.println("Finding file..."); 
      FileInputStream loadFileStream = new FileInputStream("/Users/Tyler/eclipse-workspace/myfirsttextgame/src/myfirsttextgame/" + loadFileName + ".txt"); 
      System.out.println("Loading Game..."); 
      Scanner inputStream = new Scanner("/Users/Tyler/eclipse-workspace/myfirsttextgame/src/myfirsttextgame/" + loadFileName + ".txt"); 
      while (inputStream.hasNext()) { 
       player.setStrength(Integer.parseInt(inputStream.next())); 
       System.out.println("Strength Loaded"); 
       player.setAccuracy(inputStream.nextInt()); 
       player.setHeight(inputStream.nextInt()); 
       player.setWeight(inputStream.nextInt()); 
       player.setStamina(inputStream.nextInt()); 
      } 
      System.out.println("Character Loaded Successfully."); 

     } catch (IOException e) { 
      System.out.println("Exception Occurred:"); 
      e.printStackTrace(); 
     } 
} 
+0

どこにtxtファイルが添付されていますか見つかりませんでした –

+0

どのように** player **を宣言しましたか? 'Players players = new Players();' ** players **クラスは** public **として** setStrength(**)、** setAccuracy(**)メソッドなどが宣言されていますか? – DevilsHnd

答えて

0

NumberFormatExceptionが生じます。エラーは、文字列を整数に変換しようとしたplayer.setStrength(Integer.parseInt(inputStream.next()));から発生します。 inputStream.next()をコンソールに出力してデバッグを行い、適切な整数形式(空白文字、数字以外の文字以外)であることを確認します。

また、作成したFileInputStreamオブジェクトも冗長です。

FileInputStream loadFileStream = new FileInputStream("/Users/Tyler/eclipse-workspace/myfirsttextgame/src/myfirsttextgame/" + loadFileName + ".txt");

あなたはFileInputStreamをを作成して、もう一度それを使用しないでください。代わりに、ファイルを閉じる前に、コンストラクタパラメータとしてファイルへのパスを使用してScannerを作成します。これは、未使用の元のFileInputStreamと競合する可能性のあるInputStreamを作成します。

関連する問題