Java读取特定行

时间:2015-12-18 04:15:26

标签: java

我正在尝试从文本文件中读取句子的前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

任何人都可以帮我这个吗?非常感谢帮助。

2 个答案:

答案 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