在文件中搜索一个单词然后存储在数组中

时间:2015-02-25 20:41:46

标签: java arrays readfile

我的问题是我读了一个文件然后我搜索了一个单词"(:types" 我希望在"(:types"然后代码在&#34之后排成一行;(:types" 这是我需要你找到为什么我的代码不能存储后的问题  "(:类型"(我的代码采取"            位置车辆货物)"我需要采取("太空燃料            位置车辆货物")

抱歉我的英文

  

(:类型空间燃料

   location vehicle cargo)
import java.io.BufferedReader;

import java.io.FileNotFoundException;

import java.io.FileReader;

import java.io.IOException;

import java.util.LinkedList;

import java.util.List;

import com.sun.org.apache.xalan.internal.xsltc.compiler.sym;


public class type2 {


public static void main(String[] args){


    String filePath = "C:\\test4.txt";

    BufferedReader br;

    String line = "";

    String read=null;

    List<String> temps = new LinkedList<String>();


    try {
        br = new BufferedReader(new FileReader(filePath));
        try {
            while((line = br.readLine()) != null)
            {


                String[] words = line.split(" ");

                for (String word : words) {
                  if (word.equals("(:types") ) {
                      while((read = br.readLine()) != null){
                          temps.add(read);
                          if (word.equals("(:predicates") );
                              break;

                         }
                        String[] tempsArray = temps.toArray(new String[0]);
                          String [] type=tempsArray[0].split(" ");

                          System.out.println(tempsArray[0]);

                  }

                }
            }

            br.close();

        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();

    }
}

}

2 个答案:

答案 0 :(得分:0)

你没有获得同一行中的单词的原因是因为你没有解析该行的其余部分。

首先,你得到

的第一行
while((line = br.readLine()) != null)

然后在所有空格中将其拆分为:

String[] words = line.split(" ");

但是一旦找到字符串(:types,您所做的就是再次从文件中读取。您永远不会解析数组words的其余部分。

如果要解析此数组的其余部分,可能会在数组中找到字符串(:types的索引,然后只解析其后的所有部分。

答案 1 :(得分:0)

问题似乎非常简单。

如果我理解正确,你有一个包含以下行的文件:

(:types space fuel 
location vehicle cargo)

你想要找到包含&#34;(:类型&#34;然后保存&#34;空格&#34;和&#34;燃料&#34;

的行

在你的代码中,你会读到一个新的文本行

while((line = br.readLine()) != null)

您检查行是否包含(:类型以及是否通过代码将单词存储在 next 行中:

while((read = br.readLine()) != null){
    temps.add(read);

以上就是你的问题。要解决此问题,您应将以上代码更改为以下内容:

for (String word : words){
    if(!word.equals("(:types")){
        temps.add(read);
    }
}