我正在编写一个程序来处理文本文件中的某些数据。我应该从包含比这4个信息更多的信息的文件中获取州ID,人口,出勤率和贫困状况,并将其写入新的文本文件中。然后使用这个新的文本文件进行一些数学运算。
这是原始的文本文件结构:
我在代码中遇到错误,希望对您有所帮助。具体来说,错误是索引超出范围,因此在此上下文中不能引用非静态方法。
用于定义要提取的数据的类:
完成实际提取的类:
public PopulationData(String stateId,String totPopulation,String
schoolGoingPopuplation,字符串povertPopulation)
{
this.stateId = stateId;
this.totPopulation = totPopulation;
this.schoolGoingPopuplation = schoolGoingPopuplation;
this.povertPopulation = povertPopulation;
}
public String getState()
{
return stateId;
}
public String getPopulation()
{
return totPopulation;
}
public String getSchool()
{
return schoolGoingPopuplation;
}
public String getPoverty()
{
return povertPopulation;
}
public String toString()
{
return this.stateId + " " + this.totPopulation + " " +
this.schoolGoingPopuplation + " " + this.povertPopulation;
}
//这是主要的类
inFile = new InputStreamReader(new FileInputStream(inFileName));
OutputStreamWriter outFile = new OutputStreamWriter(new FileOutputStream(outFileName));
while(scanner.hasNext()) {
String line = scanner.nextLine();
String[] columns = line.split(" ");
String sateId = columns[0];
String totPopulation = columns[9];
String schoolGoingPopuplation = columns[10]; //index out of bounds occured
String povertPopulation = columns[11]; //index out of bounds occured
PopulationData pd = new PopulationData(sateId, totPopulation, schoolGoingPopuplation, povertPopulation);
data.add(pd);
outFile.write(pd.toString());
}
for(PopulationData pd : data){
System.out.println(pd.toString());
}
}
catch(IOException except)
{
except.printStackTrace();
}
}
答案 0 :(得分:0)
第28、30、32行:文件中的字段是否真的由制表符和一个制表符分隔?看起来不像。我的猜测是它正在使用空格,而您的拆分产生的数组正好是一列,即整行。假设您有扫描仪实例,则可能打算使用该实例来通过.nextInt()
和.next()
方法读取字段。
第37行:.add()
方法返回一个布尔值,您正尝试将其写入流中。您可能打算写outfile.write(pd.toString())
?
第40行:您可能是说System.out.println(pd.toString())
,实际上拥有的PopulationDataManipulation.toString()
无效,因为它是一个实例方法,并且您的主体是静态的。>