读取文本文件Java,数字格式异常

时间:2017-12-16 06:25:20

标签: java try-catch numberformatexception

我正在尝试编写一些代码中的方法有些麻烦。我基本上只是希望这个方法将文本文件中的整数传递给另一个方法(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();
        }   
}

1 个答案:

答案 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。