我正在尝试从具有以下格式的txt文件中读取:
Matthew:1000
Mark:100
Luke:10
John:0
我有一个Score对象,用于存储玩家的名字和分数(int)。这是 分数等级:
public class Score {
String playerName;
int playerScore;
public String toString(){
StringBuilder builder = new StringBuilder();
builder.append(playerName + ":" + playerScore);
return builder.toString();
}
public void setName(String name){
this.playerName = name;
}
public void setScore(int score){
this.playerScore = score;
}
}
我想以这样的方式从文件中读取我可以获得播放器的内容 名字(马修)和他们的分数(1000,存储为整数),并做一个新的分数 宾语。这是我到目前为止尝试过的代码:
public ArrayList getLoadFile(String filename) {
ArrayList<Score> scores = new ArrayList<Score>();
BufferedReader bufferedReader = null;
try{
bufferedReader = new BufferedReader(new FileReader(filename));
String fileLine;
while((fileLine = bufferedReader.readLine()) != null){
Score newScore = new Score();
newScore.playerName = fileLine.split(":", 0)[0];
newScore.playerScore = Integer.parseInt(fileLine.split(":", 0)[1]);
scores.add(newScore);
}
} catch (FileNotFoundException e) {
} catch (IOException e) {
}
return scores;
}
此函数应该加载已保存分数的字符串表示 制作一个得分的ArrayList,然后将它们返回给测试函数。当我运行它时,它返回: java.lang.ArrayIndexOutOfBoundsException:1
非常感谢任何帮助。
答案 0 :(得分:0)
试试
while((fileLine = bufferedReader.readLine()) != null){
String[] splitResults = fileLine.split(":");
if (splitResults.length > 1) {
Score newScore = new Score();
newScore.playerName = splitResults[0];
newScore.playerScore = Integer.parseInt(splitResults[1]);
scores.add(newScore);
}
}
这将保证只有当Split
返回至少2 Strings
时才会插入。{
做成。
注意:也Integer.parseInt(String string)
可能会抛出NumberFormatException