java list rank_RankList.java

import java.io.*;

public class RankList {

//public static void main(String[] args) {

//new RankList().addPlayer("LiXue",100);

//System.out.println(new RankList().getList()[0]);

//}

public RankList() {

}

public void addPlayer(String name, int score) {

try {

BufferedReader input=new BufferedReader(new FileReader("RankList.dat"));

int n=Integer.parseInt(input.readLine());

boolean r=false;

String[] nameList=new String[n];

int[] scoreList=new int[n];

for (int i=0; i

nameList[i]=input.readLine();

scoreList[i]=Integer.parseInt(input.readLine());

if (nameList[i].equals(name)) {

scoreList[i]+=score;

r=true;

}

}

if (!r) {

n+=1;

}

boolean hasChanged=true;

while (hasChanged) {

hasChanged=false;

for (int i=0; i

if (scoreList[i]

int scoreTmp=scoreList[i];

scoreList[i]=scoreList[i+1];

scoreList[i+1]=scoreTmp;

String nameTmp=nameList[i];

nameList[i]=nameList[i+1];

nameList[i+1]=nameTmp;

hasChanged=true;

}

}

}

input.close();

BufferedWriter output=new BufferedWriter(new FileWriter("RankList.dat"));

output.write(n+"", 0, new String(n+"").length());

output.newLine();

for (int i=0; i

if (!r && i==n-1) {

output.write(name, 0, name.length());

output.newLine();

output.write(score+"", 0, new String(score+"").length());

output.newLine();

break;

}

output.write(nameList[i], 0, nameList[i].length());

output.newLine();

output.write(scoreList[i]+"", 0, new String(scoreList[i]+"").length());

output.newLine();

}

output.close();

}

catch (Exception ex1) {

try {

BufferedWriter output=new BufferedWriter(new FileWriter("RankList.dat"));

output.write('1');

output.newLine();

output.write(name, 0, name.length());

output.newLine();

output.write(score+"", 0, new String(score+"").length());

output.newLine();

output.close();

}

catch (Exception ex2) {

}

}

}

public String[] getList() {

try {

BufferedReader input=new BufferedReader(new FileReader("RankList.dat"));

int n=Integer.parseInt(input.readLine());

int count=0;

String[] list=new String[(n-1)/10+1];

for (int i=0; i

if (list[count]==null) {

list[count]="";

}

list[count]+=input.readLine()+" : "+Integer.parseInt(input.readLine());

if ((i+1)%10==0) {

count++;

} else {

list[count]+="\n";

}

}

input.close();

return list;

}

catch (Exception ex) {

return new String[] {"ûм¼"};

}

}

}

一键复制

编辑

Web IDE

原始数据

按行查看

历史

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ACM/ICPC比赛成绩会按照一定的规则计算各位参赛者的名次并实时显示排行榜,计算规则主要参考解题的数量及罚时,解题数量越多,罚时越少,则排名越高。 解题数量很容易计算,只需考察比赛中标记为“Accepted”的题数即可。罚时计算则相对复杂,对于提交到竞赛系统中的每道题目,系统会给出一个罚时,为从比赛开始到该题提交的代码第一次被“Accepted”的时间。请注意,只是第一次“Accepted”。对于“Accepted”之前的每次提交,都有20分钟的罚时,但如果该题目最终未解出,则不计罚时。 先在有一个比赛的题目通过情况记录,请生成该比赛的排行榜。 示例输入: 2008-04-25 18:00:00 2008-04-25 23:30:00 1000 1001 1002 1003 1004 38 602203621 1002 Accepted 756K 30MS C++ 2008-04-25 18:04:59 37 liheyuan 1002 Wrong_Answer 768K 10MS C++ 2008-04-25 18:28:05 36 ftest 1000 Accepted 888K 10MS C++ 2008-04-25 21:30:32 35 ftest 1000 Accepted 904K 10MS C++ 2008-04-25 21:30:55 34 gaojianwei 1000 Accepted 768K 10MS C 2008-04-25 22:15:58 33 gaojianwei 1001 Wrong_Answer 904K 10MS C 2008-04-25 22:18:01 32 gaojianwei 1004 Accepted 768K 10MS C 2008-04-25 22:24:23 31 lzz 1000 Accepted 904K 10MS C++ 2008-04-25 23:29:27 30 lzz 1001 Wrong_Answer 904K 10MS C++ 2008-04-25 23:30:17 示例输出: Rank Name Solved 1000 1001 1002 1003 1004 Penalty 1 gaojianwei 2 4:15:58 -1 0 0 4:24:23 8:40:21 2 602203621 1 0 0 0:04:59 0 0 0:04:59 3 ftest 1 3:30:32 0 0 0 0 3:30:32 4 lzz 1 5:29:27 0 0 0 0 5:29:27 5 liheyuan 0 0 0 -1 0 0 0:00:00
以下是对代码进行优化的建议: 1. 删除没有使用的导入模块 `xdrlib` 和 `matplotlib.pyplot`。 2. 将类中的构造函数 `__init__` 拆分为两个独立的方法,一个用于读取 Excel 文件并获取工作表,另一个用于处理工作表数据。 3. 通过添加 `try-except` 块来捕获可能的异常情况,例如文件不存在或工作表名称错误。 4. 将变量名称更改为更具描述性的名称,以提高代码的可读性。 重构后的代码如下所示: ```python import xlrd class ReadExcel: def __init__(self, file_path, sheet_name): self.file_path = file_path self.sheet_name = sheet_name self.colnameindex = 0 def get_sheet(self): try: workbook = xlrd.open_workbook(self.file_path) sheet = workbook.sheet_by_name(self.sheet_name) return sheet except FileNotFoundError: print("File not found.") return None except xlrd.biffh.XLRDError: print("Sheet not found.") return None def process_data(self, g_rank_list, rank_list, rank_list2): sheet = self.get_sheet() if sheet: num_rows = sheet.nrows for curr_row in range(1, num_rows): row = sheet.row_values(curr_row) g_rank_list.append(int(row[0])) rank_list.append(int(row[1])) rank_list2.append(int(row[2])) ``` 在上面的代码中,我们首先删除了导入模块 `xdrlib` 和 `matplotlib.pyplot`,因为它们没有在代码中使用。然后,我们将构造函数 `__init__` 拆分为两个独立的方法 `get_sheet` 和 `process_data`。方法 `get_sheet` 用于打开 Excel 文件并获取指定的工作表,而方法 `process_data` 用于处理工作表数据,并将其存储在给定的列表中。我们还使用 `try-except` 块来捕获可能的异常情况,并更改了变量名称以提高代码的可读性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值