程序代码如下,例如namelist.txt文件里有两行名字为lisa,andy john,ann但是返回值总为空,是方法有问题还是调用有问题?还是返回值的位置问题?
返回arraylist是老师要求的,如果代码冗长繁琐请轻拍。。(不明白为什么粘贴上来这个样子,请见谅)
//读取CSV文件,并输出你所要查看的列数的内容
public class CSVParser extends ConsoleProgram {
public void run(){
ArrayList result = new ArrayList();
String filename = openfile("Enter the filename :");
int columnIndex = readInt("Enter the column index :");
result = extractColumn(filename,columnIndex);
println(result);
}
//读取文件,若文件不存在则提示,重新键入文件名
private String openfile(String prompt){
BufferedReader rd = null;
while(rd==null){
try{
String name = readLine(prompt);
rd = new BufferedReader(new FileReader(name));
}catch(IOException e){
println("bad file.The file doesn't exist.");
}
}
return getName();
}
//根据文件名和所要获取的列数输出该列所有内容
private ArrayList extractColumn(String filename, int columnIndex) {
ArrayList result = new ArrayList();
try {
BufferedReader rd = new BufferedReader(new FileReader(filename));
String line="";
while((line = rd.readLine()) != null){
String str = (fieldsIn(line).get(columnIndex-1));
result.add(str);
}rd.close();
}catch (IOException e){
e.printStackTrace();
}
return result;
}
//将line中的所有字段都整合到一个ArrayList上
private ArrayList fieldsIn(String line) {
ArrayList result = new ArrayList();
int num=0;
while(true){
num = line.indexOf(',');
if(num<=0){
result.add(line);break;
}
String str = line.substring(0, num);
line = line.substring(num+1);
result.add(str);
}
return result ;
}
}