我需要我的java程序来读取格式化的文本文件,我将举例说明它是如何格式化的
http://i.stack.imgur.com/qB383.png
所以#1是列出的国家数量,A是区域,新西兰是国家。
所以我知道我需要读取#之后的数字以及运行循环的次数,然后下一行包含区域名称,它将是数组列表的名称。但至于实际实现这一点,我超级迷失了。
目前我的代码看起来像这样,
import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Scanner;
public class destination{
String zone;
ArrayList<String> countries;
public Object destinationList(){
Scanner s = null;
try {
s = new Scanner(new File("Files/Destination.txt"));
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
ArrayList<String> destinations = new ArrayList<String>();
while (s.hasNext()) {
destinations.add(s.nextLine());
}
s.close();
int sz = destinations.size();
for (int i = 0; i < sz; i++) {
System.out.println(destinations.get(i).toString());
}
return destinations;
}
}
但这只是将文本文件转储到数组列表中
答案 0 :(得分:0)
您不需要带有区域和国家/地区的额外课程,它将与地图完美配合:
private Map<String, List<String>> destinations = new HashMap<>();
要使用文件中的值填充地图,您可以编写类似(未经测试)的内容。
Scanner s = new Scanner(new File("Files/Destination.txt"));
int currentCount = 0;
String currentZone = "";
while(s.hasNextLine()) {
String line = s.nextLine();
if (line.startsWith("#") { // number of countries
currentCount = Integer.parseInt(line.substring(1));
} else if (line.length() == 1) { // zone
currentZone = line;
destinations.put(currentZone, new ArrayList<String>(currentCount);
} else { // add country to current zone
destinations.get(currentZone).add(line);
}
}