gpt4 book ai didi

java - 用 Java 编写文件

转载 作者:行者123 更新时间:2023-11-29 07:20:51 24 4
gpt4 key购买 nike

美好的一天!

我有一个项目(游戏)需要在明天早上展示。但是我在写高分的时候发现了一个bug。我正在尝试创建一个文本文件并使用分数作为基础按降序编写 SCORE NAME。

例如:

SCORE   NAME           RANK
230 God
111 Galaxian
10 Gorilla
5 Monkey
5 Monkey
5 Monkey

注意还有一个等级我的代码如下:

  public void addHighScore() throws IOException{
boolean inserted=false;

File fScores=new File("highscores.txt");
fScores.createNewFile();

BufferedReader brScores=new BufferedReader(new FileReader(fScores));
ArrayList vScores=new ArrayList();
String sScores=brScores.readLine();
while (sScores!=null){
if (Integer.parseInt(sScores.substring(0, 2).trim()) < score && inserted==false){
vScores.add(score+"\t"+player+"\t"+rank);
inserted=true;
}
vScores.add(sScores);
sScores=brScores.readLine();
}
if (inserted==false){
vScores.add(score+"\t"+player+"\t"+rank);
inserted=true;
}
brScores.close();

BufferedWriter bwScores=new BufferedWriter(new FileWriter(fScores));
for (int i=0; i<vScores.size(); i++){
bwScores.write((String)vScores.get(i), 0, ((String)vScores.get(i)).length());
bwScores.newLine();
}
bwScores.flush();
bwScores.close();
}

但是如果我输入三个数字:60 Manny,文件将是这样的:

   60      Manny
230 God
111 Galaxian
10 Gorilla
5 Monkey
5 Monkey
5 Monkey

问题是它只能读取 2 个数字,因为我使用 sScores.substring(0, 2).trim())。我尝试将其更改为 sScores.substring(0, 3).trim())。但变成了一个错误,因为它读取了字符部分。任何人都可以帮助我修改我的代码,以便我最多可以读取 4 个数字吗?非常感谢您的帮助。

最佳答案

你应该使用的是:

String[] parts = sScrores.trim().split("\\s+", 2);

然后您将得到一个数组,其中索引 0 为数字,索引 1 为名称。

int theNumber = Integer.parseInt(parts[0].trim();
String theName = parts[1].trim();

您可以像这样重写 while 循环:

String sScores=brScores.readLine().trim();
while (sScores!=null){
String[] parts = sScrores.trim().split(" +");
int theNumber = Integer.parseInt(parts[0].trim();
if (theNumber < score && inserted==false){
vScores.add(score+"\t"+player+"\t"+rank);
inserted=true;
}
vScores.add(sScores);
sScores=brScores.readLine();
}

就个人而言,我会添加一个新的 HighScore 类来帮助解析文件。

class HighScore {

public final int score;
public final String name;
private HighScore(int scoreP, int nameP) {
score = scoreP;
name = nameP;
}

public String toString() {
return score + " " + name;
}

public static HighScore fromLine(String line) {
String[] parts = line.split(" +");
return new HighScore(Integer.parseInt(parts[0].trim()), parts[1].trim());
}
}

关于java - 用 Java 编写文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4889241/

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