我试图从一个文件中构建一个数组,该文件列出了43个国家/地区以及其各自的4个其他特定信息字段。我得到了代码,我必须阅读代码(使用echo print验证),但我不知道如何处理其余代码,以便我可以在输出方面得到一些结果。
public static void main(String[] args) throws IOException {
// TODO code application logic here
String inputString = null;
String cName;
String cCapital;
String regionNum;
int capitalPop;
int region;
File f = new File("Countries.txt");
FileReader fr = new FileReader(f);
BufferedReader br = new BufferedReader(fr);
while (inputString != null)
{
cName = inputString.substring(0, 15).trim();
cCapital = inputString.substring(15, 30);
capitalPop = Integer.parseInt(inputString.substring(55, 60));
inputString = br.readLine();
}
br.close();
fr.close();
}
while循环中的三行具有用于从文件行中剪裁的样本值。我认为我的主要问题是我在概念上感到困惑。任何输入都表示赞赏。谢谢
答案 0 :(得分:2)
我们都没有在您的代码中看到List
,但这是应该如何完成的:
您需要创建一个ArrayList,然后为其添加每个国家/地区的对象。如果国家/地区的数量始终固定为43,则可以直接使用数组。
public static void main(String[] args) throws IOException {
// TODO code application logic here
String inputString = null;
String cName;
String cCapital;
String regionNum;
int capitalPop;
int region;
File f = new File("Countries.txt");
FileReader fr = new FileReader(f);
BufferedReader br = new BufferedReader(fr);
List<Country> countries = new ArrayList<Country>();
inputString = br.readLine();
while (inputString != null)
{
cName = inputString.substring(0, 15).trim();
cCapital = inputString.substring(15, 30);
capitalPop = Integer.parseInt(inputString.substring(55, 60));
Country country = new Country();
country.setCName(cName);
// set other members
countries.add(country); // This is your list of countries
inputString = br.readLine();
}
Country[] countryArray = new Country[countries.size()];
countries.toArray(countryArray);
// voila.. the country array.
br.close();
fr.close();
}
public class Country {
private String cName;
private String cCapital;
//.. other fields;
public String getCName(){ return this.cName;}
public void setCName(String cName) {this.cName = cName;}
// create other setters / getters for each of the member variables.
}
答案 1 :(得分:1)
我的代码中没有看到List
对象...但是要获取一个List并将其放入数组中调用toArray()
方法,请参阅api文档
http://docs.oracle.com/javase/8/docs/api/java/util/List.html
答案 2 :(得分:0)
我会阅读有关CSV文件(逗号分隔值或逗号分隔值)以及从中读取它们的常用方法。诸如扫描程序之类的类可以按特定值分隔每个读取行,因此您可以依赖该分隔符而不是明确说明字符的长度。根据文件在文件中的组织方式,这可能更有效,更明智。此外,您的分隔符可以是任何字符串,最常见的是“,”。
另外,我将定义一个类,它保存您需要存储的值,并创建一个包含数据的类型的数组。然后,您可以稍后回读该数组并调用您为其定义的toString()方法来打印存储的值。