我正在尝试编写一些代码中的方法有些麻烦。我基本上只是希望这个方法将文本文件中的整数传递给另一个方法(setStrength,setAccuracy等)。下面的源代码和文本文件已附加。请以任何方式帮助您。谢谢!
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 :(得分:0)
当一个对象试图将String解析为一个整数,其中String不是一个合适的整数格式时,会发生NumberFormatException。该错误将来自player.setStrength(Integer.parseInt(inputStream.next()));
,您尝试将String转换为Integer。通过将inputStream.next()
打印到控制台并确保它是适当的整数格式(没有空格,非数字字符等)来进行一些调试。
此外,您创建的FileInputStream对象是多余的。
FileInputStream loadFileStream = new FileInputStream("/Users/Tyler/eclipse-workspace/myfirsttextgame/src/myfirsttextgame/" + loadFileName + ".txt");
您创建了一个FileInputStream并且不再使用它;相反,在关闭它之前,您创建一个Scanner,其中包含文件的路径作为构造函数参数;它将创建一个可能与原始未使用的FileInputStream冲突的InputStream。