gpt4 book ai didi

java - 我想逐行读取文件并拆分字符串以用作新对象的属性

转载 作者:行者123 更新时间:2023-12-01 04:21:11 25 4
gpt4 key购买 nike

我正在尝试读取具有以下格式的 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;
}

}

我想以这样的方式从文件中读取,以便我可以获得玩家的名字(Matthew)和他们的分数(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

任何帮助将不胜感激。

最佳答案

试试这个

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

关于java - 我想逐行读取文件并拆分字符串以用作新对象的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18884188/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com