我正在用java编写一个程序,它涉及保存用户名和他们的高分。得分将保存在偶数行上,名称将保存在奇数行上。例如:
Horace
2203
Rufus
435
Bertie
4725
Lawrence
174
Kane
...
这可能吗?是否需要导入任何库?文本文件是否需要在eclipse中的项目内?
非常感谢你。
到目前为止,我已创建了两个列表:
LinkedList<String> listName = new LinkedList<String>();
LinkedList<Integer> listScore = new LinkedList<Integer>();
并将数据保存到他们:
listName.add(answer);
listScore.add(score);
答案 0 :(得分:2)
这是可能的,但从概念上讲:这是错误的方法。
您看,您所拥有的信息属于一起。我猜你想要创造
A)List<String> players
和
B)List<Integer> scores
例如。
然后&#34;相同的索引&#34;意思是:球员X的得分
不要这样做。而是创建一个具有两个属性(名称和分数)的Player类;然后使用/填充List<Player>
但不仅仅是你如何建模数据的问题;事情很简单:
open your file
loop:
read one line --- which should contain a String (name)
read one line --- which should contain a number
从伪代码中可以看出;那里真的没有魔力。您知道您的数据所具有的结构;所以只需使用它!
答案 1 :(得分:1)
您可以使用以下方法: -
1)逐行读取文件
2)如果它是奇数,假设它是用户,则输入用户列表
3)如果是偶数,假设它是得分,则将其列入分数列表
4)使用Linked List来维护顺序,因此两个列表中的任何索引都将保存相关数据。
您可以在以下示例的基础上构建 -
public static void main(String[] args){
//input.txt file is kept at the same place as that of class ReadFile
File file=new File(ReadFile.class.getResource("input.txt").getFile());
//User List
List<String> userList=new LinkedList<String>();
//Score List
List<String> scoreList=new LinkedList<String>();
int count =1;
try (BufferedReader br = new BufferedReader(new FileReader(file))) {
String sCurrentLine;
while ((sCurrentLine = br.readLine()) != null) {
if(count%2==0){
//Line is even
scoreList.add(sCurrentLine);
}else{
//Line is odd
userList.add(sCurrentLine);
}
count++;
}
System.out.println("Printing User List:"+userList+"\n\nPrinting Score List:"+scoreList);
} catch (IOException e) {
e.printStackTrace();
}
}