2017-12-16 5 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

** 어떻게 ** 플레이어 **를 선언 했습니까? '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를 작성합니다.