我有一个问题,假设我有一个像这样的文本文件:
姓名姓氏,号码,号码.....号码\ n 姓名中间姓,号码,号码......号码\ n 姓名,号码,号码.....号码\ n
我想将每行中的“names + surname”或“names + middle + surname”保存到一个数组列表索引中。 例如,我想要一个数组列表的一个索引中第一行的“Name Surname”。
我确实尝试使用字符串变量并在循环中将这两个元素一起添加。但正如您所看到的,名称并不是真正的任何特定类型。 我该怎么办?我真的很感激你的帮助!
答案 0 :(得分:2)
假设您有一个名为String
的{{1}}变量,它包含一个给定的行。在这种情况下:
line
这应该可以帮助您入门。
第一行将左边的部分分配给第一个逗号String namePart = line.substring(0, line.indexOf(","));
String dataPart = line.substring(line.IndexOf(",") + 1);
。第二行将第一行的右边部分分配给namePart
。当然,您需要使用逗号分隔dataPart
作为分隔符并构建数组或类似的东西,并将相关信息添加到项目集的新条目中。
答案 1 :(得分:1)
所以我做了上面答案中提到的内容。但我也做了一些不同的事情。
代码:
void readScore() {
int nextToken;
int numberOfTokens = 0;
String nameOfStudent = "";
BufferedReader bufferedReader = null;
StreamTokenizer myToken;
// create a buffered stream to read from the file
try {
bufferedReader = new BufferedReader(new FileReader(new File(inputFileName)));
} catch (FileNotFoundException e) {
System.out.println(
"File Not Found. Please add file in the proper directory or give the proper file path and execute");
System.exit(1); // exit if file not found
}
myToken = new StreamTokenizer(bufferedReader);
myToken.eolIsSignificant(true);
try {
nextToken = myToken.nextToken();
while (nextToken != StreamTokenizer.TT_EOF) {
if (nextToken == StreamTokenizer.TT_NUMBER) {
marks.add(myToken.nval);
numberOfTokens++;
}
if (nextToken == StreamTokenizer.TT_WORD) {
nameOfStudent += myToken.sval + " ";
}
if (nextToken == StreamTokenizer.TT_EOL) {
students.add(nameOfStudent);
nameOfStudent = "";
}
nextToken = myToken.nextToken();
有效!如果这是有效的,请告诉我。但它确实有效。
答案 2 :(得分:0)
我建议分开这条线:
String[] parts = line.split(",");
这为您提供了包含所有部分的数组。 parts[0]
保存名称,以及后续索引中的所有数字。