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