类对象列表

时间:2014-05-11 15:21:05

标签: java

我被卡住..我试图用文字解析文件中的文字,但将其保存在对象列表中。是否有可能这样做?

    public class Text {
    public static List<Words> words = new ArrayList<Words>();
}

public class Words {

private String path;
private String[] inside;
private BufferedReader in;

public Words(String path, String[] inside) {
    this.inside = inside;
    this.path = path;
}

public String[] splittinIntoWords() throws IOException {

    in = new BufferedReader(new FileReader(path));
    String s;

    while ((s = in.readLine()) != null) {
        inside = s.split(" ");
        //System.out.println(Arrays.toString(inside)); 
    }
    return inside;
}

}

和主要课程

public class Main {

public static void main(String[] args) throws IOException {

    String file_name = "book.doc";
    String[] inside = null;
    Words w = new Words(file_name, inside);
    w.splittinIntoWords();

    Text.words.add(w); //after add in list i have a reference.
    System.out.println(Text.words.toString());
}
}
我确实错了。我知道如何使用字符串列表执行此操作 请告诉我,可以在单词列表中添加文本分割为单词

2 个答案:

答案 0 :(得分:0)

你用你读过的每一行覆盖了单词Words.inside的数组。您需要每次围绕while循环将split()的输出添加到List中,而不仅仅是在结尾。

我希望您的代码能够显示文件最后一行中的单词,但可能会有一个空白的最后一行,在这种情况下您将看不到任何内容。

另外,我假设你的&#34; book.doc&#34;实际上不是.doc格式的文件 - 文字处理器文件需要特殊的解析;您所写的内容仅适用于纯文本文件。

答案 1 :(得分:0)

您的代码存在一些问题。

  1. Text.words不应该是静态的。每个文本实例都包含不同的单词集合。
  2. 当你制作“词汇集”时,它应该是Collection&lt;字取代。因为集合中的每个项目都只是一个项目。
  3. 但又一次,收集&lt;字&GT;与Collection&lt;相同串取代。所以使用它。
  4. “path”,“in”不应该是“Words”的成员变量。只需在您的方法中使用它们。特别是因为你从未关闭过“in”。
  5. 你正在覆盖你循环的文件中每一行的“内部”内容。如果你有“Collection&lt; String&gt; words”,那就做一下words.addAll(inside);在 你的循环。
  6. 是的,我知道这不是答案,但我想指出你正确的方向。从长远来看,这可能对您有所帮助。