读取格式化的文本文件 + 提取某些信息 + 将其加载到 JList 中



所以在这里我得到了可以读取文本文件的代码:

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileNotFoundException;
import java.io.IOException;
public class ReadTextFile {
    public static void main(String[] args) {
        File file = new File("Test.txt");
        StringBuffer contents = new StringBuffer();
        BufferedReader reader = null;
        try {
            reader = new BufferedReader(new FileReader(file));
            String text = null;
            // repeat until all lines is read
            while ((text = reader.readLine()) != null) {
                contents.append(text).append(System.getProperty("line.separator"));
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (reader != null) {
                    reader.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        // show file contents here
        System.out.println(contents.toString());
    }
}

好的,现在我需要我的文本文件(Test.txt)具有以下结构(示例):

topic:- <climate>subtopic1, <atmosphere_type>subtopic2
subtopic1:- <temperatures>sentence1, <gases>sentence2, <winds>sentence3
subtopic2:- <gas_composition>sentence4, <gravitational_weight>sentence5
sentence1:- temperatures are around 34ºC but they can reach -42ºC in winter
sentence2:- there are significant proportions of nitrogen (13%) and butane (24%)
sentence3:- there are permanent winds with gusts of 118 km/h
sentence4:- methane (48%), nitrogen (13%), butane (24%) and oxygen (12%)
sentence5:- gravity in ecuador is 7.95 atmospheres

我真正需要的是有 2 个JList,在第一个JList中我可以选择一个主题(如"气候"或"大气类型"),然后在第二个JList中选择一个子主题(如果我选择"气候",那么我可以选择"温度"、"气体"或"风"),所以当我遇到JButton时, 程序会向我显示相应的句子。做这样的事情很难吗?感谢您的帮助!:)

尝试从文件构建以下数据结构。

// map of a topic (or subtopic) name to a list of subtopic (or sentence) names
Map<String, List<String>> subtopics = new HashMap<String, List<String>>();
// The above will contain the entries:
// topic -> [subtopic1, subtopic2]
// subtopic1 -> [sentence1, sentence2, sentence3]
// subtopic2 -> [sentence4, sentence5]
// map of topic/sentence name to heading
Map<String, String> headings = new HashMap<String, String>();
// This will contain:
// subtopic1 -> climate
// subtopic2 -> atmosphere type
// sentence1 -> temperatures
// sentence2 -> gases
// sentence3 -> winds
// sentence4 -> gas composition
// sentence5 -> gravitational weight
// dictionary for looking up a sentence name and retrieving its corresponding text
Map<String, String> dict = new HashMap<String, String>();
// sentence1 -> temperatures are around 34ºC but they can reach -42ºC in winter
// sentence2 -> there are significant proportions of nitrogen (13%) and butane (24%)
// sentence3 -> there are permanent winds with gusts of 118 km/h
// sentence4 -> methane (48%), nitrogen (13%), butane (24%) and oxygen (12%)
// sentence5 -> gravity in ecuador is 7.95 atmospheres

这应该会让你朝着一个好的方向前进。需要注意的一点是,当第一次将主题添加到"子主题"映射时,您必须记住首先创建列表(例如 ArrayList),将子主题名称添加到列表中,并将列表作为主题名称的值。如果在列表中找到主题名称,只需将子主题名称添加到现有列表中即可。

相关内容

  • 没有找到相关文章

最新更新