所以我有一个数独游戏,我正在尝试根据玩家的时间为它实现一个高分系统(记录前 5 名玩家) 。时间越短,高分中的排名越高。我已经考虑过如何通过流来实现它。但是,我不知道如何将新的高分添加到我的二维数组 ( nametime[5][2]
)。我可以添加一个名称和分数,但是当我再次玩我的游戏时,我无法添加一个新的。
变量:
private String[][] nametime = new String[5][2];
private String[] names = new String[5];
private String[] times = new String[5];
这是我到目前为止所做的:
//assigns values to names[] and times[]
private void addNamesAndTimes(String name, String score){
names[0] = name;
times[0] = score;
System.out.println("Player: " + name + " || " + "Time: " + score);
}
我只为他们的第一个索引分配了名称和分数,names[0]
因为times[0]
这是我的问题所在。我不知道如何继续将名称和分数添加到我的数组中。
//merges names[] and times[] array into one 2D array nametime[][]
private String[][] mergeArrays(String[] a, String[] b){
for(int i = 0; i < nametime.length; i++){
nametime[i][0] = a[i];
nametime[i][1] = b[i];
}
return nametime;
}
我决定合并我的names[]
和times[]
数组,因为我times[]
稍后会对数组做一些事情。(分数比较)
public void createScoreFile(String name, String score){
addNamesAndTimes(name, score);
File file = new File("Scores.txt");
try {
if(!file.exists()){
System.out.println("Creating new file...");
file.createNewFile();
}
FileOutputStream fo = new FileOutputStream(file, true);
PrintStream ps = new PrintStream(fo);
for(int i = 0; i < nametime.length; i++){
for(int j = 0; j < nametime[0].length; j++){
ps.print(mergeArrays(names, times)[i][j] + "\t");
}
ps.println();
}
ps.close();
} catch(Exception ex) {
ex.printStackTrace();
}
}
此方法用于创建存储我的nametime[][]
数组的文件
//reads the contents of the text file and outputs it back to nametime[][]
public String[][] loadScoreFile(){
File file = new File("Scores.txt");
try {
Scanner scan = new Scanner(file);
for(int i = 0; i < nametime.length; i++){
for(int j = 0; j < nametime[i].length; j++){
nametime[i][j] = scan.next();
}
}
System.out.println("Nametime Array:");
for(int i = 0; i < nametime.length; i++){
for(int j = 0; j < nametime[i].length; j++){
System.out.print(nametime[i][j] + "\t");
}
System.out.println();
}
} catch(Exception ex) {
ex.printStackTrace();
}
return nametime;
}
此方法用于读取我的 Score.txt 文件
//method for showing the table and frame
public void showFrame(){
table = new JTable(loadScoreFile(), header);
*other GUI stuff here*
}
我会感谢任何可以帮助我的人!
编辑:这里再次重申我的问题。当我玩完游戏时,它应该在数组和 .txt 文件中记录玩家姓名和得分。然后我关闭游戏。当我打开游戏并再次完成游戏时,它必须再次将名称和分数存储到数组和 .txt 文件中。但就我而言,这不是正在发生的事情。