所以我有这个文本文件:
FRAMae Berenice MEITE 455.455
CHNKexin ZHANG 454.584
UKRNatalia POPOVA 453.443
GERNathalie WEINZIERL 452.162
RUSEvgeny PLYUSHCHENKO 191.399
CANPatrick CHAN 189.718
CHNHan YAN 185.527
CHNCheng & Hao 271.018
ITAStefania & Ondrej 270.317
USAMarissa & Simon 264.256
GERMaylin & Daniel 260.825
FRAFlorent AMODIO 179.936
GERPeter LIEBERS 179.615
JPNYuzuru HANYU 197.9810
USAJeremy ABBOTT 165.654
UKRYakov GODOROZHA 160.513
GBRMatthew PARR 157.402
ITAPaul Bonifacio PARKINSON 153.941
RUSTatiana & Maxim 283.7910
CANMeagan & Eric 273.109
FRAVanessa & Morgan 257.454
JPNNarumi & Ryuichi 246.563
JPNCathy & Chris 352.003
UKRSiobhan & Dmitri 349.192
CHNXintong &Xun 347.881
RUSYulia LIPNITSKAYA 472.9010
ITACarolina KOSTNER 470.849
JPNMao ASADA 464.078
UKRJulia & Yuri 246.342
GBRStacey & David 244.701
USAMeryl &Charlie 375.9810
CANTessa & Scott 372.989
RUSEkaterina & Dmitri 370.278
FRANathalie & Fabian 369.157
ITAAnna & Luca 364.926
GERNelli & Alexander 358.045
GBRPenny & Nicholas 352.934
USAAshley WAGNER 463.107
CANKaetlyn OSMOND 462.546
GBRJenna MCCORKELL 450.091
第一个数字是事件代码(介于1和4之间)。中间的四位数是竞争对手在比赛中的得分(例如:Mae Berenice Meite在比赛4中得分为55.45)。最后一位是竞争对手的团队积分,这些积分将被添加到该团队的总跑数中(Meite为FRA的团队总数增加5分)。
我已经设法使用列数分割下一行的每一行,如下所示:
team = string.substring(0,3).trim();
names = string.substring(3,30).trim();
String[] numbers = new String[3];
numbers[0] = string.substring(30,31);
numbers[1] = string.substring(31,36);
numbers[2] = string.substring(36);
所以我现在有这样的组织:
JPN Yuzuru HANYU 1 97.98 10.0
RUS Tatiana & Maxim 2 83.79 10.0
RUS Yulia LIPNITSKAYA 4 72.9 10.0
USA Meryl &Charlie 3 75.98 10.0
RUS Evgeny PLYUSHCHENKO 1 91.39 9.0
CAN Meagan & Eric 2 73.1 9.0
ITA Carolina KOSTNER 4 70.84 9.0
CAN Tessa & Scott 3 72.98 9.0
CAN Patrick CHAN 1 89.71 8.0
......等等其余部分。
问题在于:我需要将每个团队的四个不同条目合并为一个。例如,我希望这是法国的输出:
FRA Mae Berenice MEITE, Florent Amodio, Vanessa & Morgan, Nathalie & Fabian
22 Points
这列出了所有FRA的竞争对手,并将每个赛事的团队积分(最后一位数)合计为22分。
我不确定如何在不为每个国家/地区创建单独的变量(如usaPoints,fraPoints,gerPoints等)的情况下完成此操作,并在我浏览和阅读每行文本时添加它们,但这不起作用,因为我需要将每个团队的积分的运行总数与竞争对手的名称和国家/地区名称相关联,以便我可以将所有这些数据一起输出。
有没有办法可以通过我的开始做到这一点,或者从一开始就以不同的方式做到这一点?
答案 0 :(得分:2)
如果我已正确阅读并理解您的问题,我最好的建议是为每个国家/地区创建一个对象。以下内容:
public class Country{
String countryName;
float totalPoints;
List<String> competitors
}
要获得所需的输出,您可以从列表中打印国家/地区,每个竞争对手的名称(对于列表中的每个字符串...),然后是总点数。如果你想保留每个参赛者的得分,你也可以用类似的方式List<Map<String, float>>
。
您甚至可以将所有国家/地区存储在Map<String, Country>
〜
回应您的详细要求:
Map<String, Country> countries = new HashMap<String, Country>();
Country country;
//...loop to read the file...
country = countries.get(team);
if (country == null) {
country = new Country();
}
//add information to country
countries.put(team, country);
//...end loop...