java操作和排序文本文件
我正在做一个项目,我得到了一个text file
,我必须为每个团队加上分数,并打印出前5名的团队
文本文件如下所示:
FRAMae Berenice MEITE 455.455<br>
CHNKexin ZHANG 454.584<br>
UKRNatalia POPOVA 453.443<br>
GERNathalie WEINZIERL 452.162<br>
RUSEvgeny PLYUSHCHENKO 191.399<br>
CANPatrick CHAN 189.718<br>
CHNHan YAN 185.527<br>
CHNCheng & Hao 271.018<br>
ITAStefania & Ondrej 270.317<br>
USAMarissa & Simon 264.256<br>
GERMaylin & Daniel 260.825<br>
FRAFlorent AMODIO 179.936<br>
GERPeter LIEBERS 179.615<br>
JPNYuzuru HANYU 197.9810<br>
USAJeremy ABBOTT 165.654<br>
UKRYakov GODOROZHA 160.513<br>
GBRMatthew PARR 157.402<br>
ITAPaul Bonifacio PARKINSON 153.941<br>
RUSTatiana & Maxim 283.7910<br>
CANMeagan & Eric 273.109<br>
FRAVanessa & Morgan 257.454<br>
JPNNarumi & Ryuichi 246.563<br>
JPNCathy & Chris 352.003<br>
UKRSiobhan & Dmitri 349.192<br>
CHNXintong &Xun 347.881<br>
RUSYulia LIPNITSKAYA 472.9010<br>
ITACarolina KOSTNER 470.849<br>
JPNMao ASADA 464.078<br>
UKRJulia & Yuri 246.342<br>
GBRStacey & David 244.701<br>
USAMeryl &Charlie 375.9810<br>
CANTessa & Scott 372.989<br>
RUSEkaterina & Dmitri 370.278<br>
FRANathalie & Fabian 369.157<br>
ITAAnna & Luca 364.926<br>
GERNelli & Alexander 358.045<br>
GBRPenny & Nicholas 352.934<br>
USAAshley WAGNER 463.107<br>
CANKaetlyn OSMOND 462.546<br>
GBRJenna MCCORKELL 450.091<br>
前三个字母代表团队
正文的其余部分是竞争对手的名字
最后一位数字是选手获得的分数
迄今为止的代码:
import java.util.Arrays;
public class project2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
String[] array = new String[41];
String[] info = new String[41];
String[] stats = new String[41];
String[] team = new String[41];
//.txt file location
FileInput fileIn = new FileInput();
fileIn.openFile("C:\\Users\\O\\Desktop\\turn in\\team.txt");
// txt file to array
int i = 0;
String line = fileIn.readLine();
array[i] = line;
i++;
while (line != null) {
line = fileIn.readLine();
array[i] = line;
i++;
}
//Splitting up Info/team/score into seprate arrays
for (int j = 0; j < 40; j++) {
team[j] = array[j].substring(0, 3).trim();
info[j] = array[j].substring(3, 30).trim();
stats[j] = array[j].substring(36).trim();
}
// Random stuff i have been trying
System.out.println(team[1]);
System.out.println(info[1]);
System.out.println(stats[1]);
MyObject ob = new MyObject();
ob.setText(info[0]);
ob.setNumber(7, 23);
ob.setNumber(3, 456);
System.out.println("Text is " + ob.getText() + " and number 3 is " + ob.getNumber(7));
}
}
我在这一点上几乎被卡住了,因为我不知道如何将每个队的得分相加
# 1 楼答案
没有经过测试,但应该给你一些想法:
只需从文件中删除
<br>
# 2 楼答案
你的字符串拆分逻辑看起来不错。 创建一个类似PlayerData的类。为每一行创建该类的一个实例,并使用setter将所有三个字段设置为该实例。 继续将PlayerData对象添加到数组列表中
循环遍历arraylist并将团队得分累积到hashmap中。创建一张地图,通过将teamCode映射到totalScore来累积团队分数
始终在自定义对象中为每一行存储行数据。通常,每列的字符串[]不是保存数据的好方法
# 3 楼答案
看看地图
地图是一个集合,允许您在很短的时间内获取与密钥相关的数据。 您可以创建一张地图,其中键是国家名称,值为总分
例如:
如果分数存在,这将添加到国家分数中,否则将为初始化为0的国家创建新的totalScore
# 4 楼答案
这看起来像是家庭作业。。。首先,您需要检查如何解析文件中的字符串
你的意思是:前3个字符是国家,看起来是正确的,但是你把信息设置为第4到第30个字符,这是不正确的。你需要动态地计算出结果和分数的开始。“info”和“stats”之间有一个空格,知道可以使用String的indexOf函数。(http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#indexOf(int))
# 5 楼答案
看看File Utils。之后,可以使用String Utilse删除<;br>;将其用作树形图的键。这样你就可以订购iTen了
当然,您需要调整代码段