我有一个大约5000个名字的文本文件,每个名称都用行分隔。
我已经完成了将所有名称添加到ArrayList"名称",但是 我无法在我的arrayList分数中添加任何内容。
我不知道我哪里出错了,特别是在addScores方法中,根本没有输出任何东西。
如果需要更多信息,请询问。
感谢您的帮助..
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
public class ScoringNames {
BufferedReader x = null;
String location = "xxxxx\\names.txt";
ArrayList<String> names = new ArrayList<String>();
ArrayList<Integer> scores = new ArrayList<Integer>();
public void readFile(){ //Opens file, and prints every line.
try{
x = new BufferedReader(new FileReader(location));
} catch(FileNotFoundException e) {
e.printStackTrace();
}
try{
String name = x.readLine();
while(name != null){
//System.out.println(name);
names.add(name);
name = x.readLine();
}
} catch(IOException e) {
e.printStackTrace();
}
}
public int nameScore(String name){
this.readFile(); //Open file and read, so that values are added to <names>
this.sortNames();
int score = 0;
char[] tempName = name.toCharArray();
for (char i : tempName){
score += alphValue(i);
}
return score;
}
public void addScores(){
for(String x : names){
scores.add(nameScore(x));
}
}
public void printScores(){
for(int counter: scores)
System.out.println(counter);
}
public static void main(String[] args) {
ScoringNames abc = new ScoringNames();
abc.readFile();
abc.addScores();
abc.printScores();
}
}
我得到的错误是:
Exception in thread "main" java.util.ConcurrentModificationException
at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:901)
at java.util.ArrayList$Itr.next(ArrayList.java:851)
at ScoringNames.addScores(ScoringNames.java:148)
at ScoringNames.main(ScoringNames.java:163)
答案 0 :(得分:3)
您正在修改List
names
,同时通过For
方法的addScores()
循环访问它。
当您调用nameScore(String str)
方法时,您不需要再次读取该文件,因为所有数据都已被读取并存储在names
列表中。您只需要评估String
并返回分数。
public int nameScore(String name){
int score = 0;
char[] tempName = name.toCharArray();
for (char i : tempName){
score += alphValue(i);
}
return score;
}
答案 1 :(得分:2)
更改方法nameScore
- 删除两个顶行。
this.readFile(); // Open file and read, so that values are added to
// <names>
this.sortNames();
没有必要,readFile()
是错误的原因
出错的原因是您尝试更改每个循环(this.names
)中的for (String x : names)
值,这在Java中是禁止的。
public int nameScore(String name) {
int score = 0;
char[] tempName = name.toCharArray();
for (char i : tempName) {
score += alphValue(i);
}
return score;
}