从文本文件中读取时没有此类元素异常

时间:2016-03-20 19:45:04

标签: java exception io

我正在尝试从文本文件中读取并使用数据来恢复保存游戏。问题是,当它从文件中读取第一行代码时,它会抛出一个没有这样的元素异常?任何人都可以给我一个提示,说明为什么会这样。我检查了文本文件,数据可供阅读。

以下是使用的代码:

public void readSave() {

            int p1Turn = 0;
            int p2Turn = 0;

            try {
                FileReader fr = new FileReader("snorkels.txt");
                BufferedReader reader = new BufferedReader(fr);
                String line = reader.readLine();
                Scanner scan = null;

                int playerNumber = 0;


                while (line != null) {
                    scan = new Scanner(line);
                    playerNumber = scan.nextInt(); // No such element exception 

                    if (playerNumber == 1) {
                        player1.setName(scan.next());
                        player1.setColour(scan.next());
                        p1Turn = scan.nextInt();
                    }

                    if(playerNumber == 2){
                        player2.setName(scan.next());
                        player2.setColour(scan.next());
                        p2Turn = scan.nextInt();
                    }

                    line = reader.readLine();
                }


                reader.close();

            } catch (FileNotFoundException e) {
                System.out.println("Couldnae find the file");
            } catch (IOException e) {
                System.out.println("Wee problem reading from file");
            }


        }

当我尝试读取第一个int时抛出异常。

文本文件包含以下数据:

1 jack P 0

2 AI G 0

2 个答案:

答案 0 :(得分:0)

您可能不应该使用扫描仪来获取您的号码。

您将保存文件的行作为字符串,您应该通过拆分字符串来获取不同的元素。

int playernumber = Integer.parseInt(line.split(" ")[0]);
int turn = Integer.parseInt(line.split(" ")[3]);

希望有帮助...

答案 1 :(得分:0)

异常是因为文件,你之间有一个空行 1 jack P 0 2 AI G 0 ,所以当您的扫描仪试图获取空行的nexInt时会抛出异常。

删除它,它会起作用。

相关问题