我正在尝试从文本文件中读取句子的前3个单词。 文本文件如下所示:
No. Name Age
1 Hello 12
Performance: Good
Information for student, Class Allocated:13
No. Name Age
2 Hi 13
Performance: Very Good
Data for student, Class Allocated:1
No. Name Age
3 HelloHello 13
Information for student, Class Allocated:1
我如何编码读取文件如下所示:
while (read.hasNext())
{
if (read.next().equals("No.")){
Eliminate.add(read.nextLine()); //eliminate first line
No.add(read.next());
Name.add(read.next());
Age.add(read.nextInt());
}
这是我最初阅读文本文件的方式。但我如何遇到一个问题,我需要信息部分。同时我尝试回用这个概念让我阅读信息,但似乎没有工作。逻辑上我不能打破while循环,一旦我打破while循环将停止,不会得到的信息。 下面显示了我尝试但无法正常工作的代码:
while (read.hasNext())
{
if (read.next().equals("No.")){
Eliminate.add(read.nextLine()); //eliminate first line
No.add(read.next());
Name.add(read.next());
Age.add(read.nextInt());
while (read.hasNext()){
if (read.next().equals("Information")||read.next().equals("Data")){
if(read.next().equals("Allocated:")){
Classroom.add(read.nextInt());
}
}
break;
}
}
}
我想要的输出是:
Name: Hello
Classroom: 13
Name: Hi
Classroom: 1
任何人都可以帮我这个吗?非常感谢帮助。
答案 0 :(得分:0)
我相信Scanner正是你要找的。查看扫描仪的文档,如果可能的话,您可能会意识到要重新格式化输出。
Scanner sc = new Scanner(reader.fileName)
Scanner.useDelimiter("\\s*Hello\\s*")
while (sc.hasNext()){
sc.nextInt() \\ = 1
sc.nextInt() \\ = 12
}
答案 1 :(得分:0)
正如您在问题中提到的那样,您正在从文本文件中读取文本,然后您可以使用onActivityResult
读取每行文件并使用startActivityForResult
来管理文件中的行顺序,之后填充BufferedReader
中的行,您必须应用业务逻辑从行中提取数据。
在下面的示例中,我试图向您展示我解决问题的方法,在应用业务逻辑之后,我使用了嵌套的内部类LinkedList
来存储学生信息。
LinkedList