Reading a formatted text file + Extracting certain information + Loading it into a JList
So here I got my code that would read a text file:
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 (IOExcepti开发者_如何学编程on e) {
e.printStackTrace();
}
}
// show file contents here
System.out.println(contents.toString());
}
}
Ok, now I need my text file (Test.txt) to have the following structure (Example):
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
What I really need is to have 2 JList
, where in the first JList
I could choose a topic (Like "climate" or "atmosphere type") and then on my second JList
I'd select a subtopic (If I choose "climate", then I could choose "temperatures", "gases" or "winds"), so when I hit a JButton
, the program would show me the corresponding sentence. Is it hard to do something like that? Thanks for your help! :)
Try to build the following data structures from the file.
// 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
This should get you going in a good direction. One bit to watch for is when adding a topic to the 'subtopics' map for the first time, you have to remember to first create the List (e.g. an ArrayList), add the subtopic name to the list and and the list as the value for the topic name. If the topic name is found in the list, just add the subtopic name to the existing List.
精彩评论