不太明白你的代码再做什么。我只能根据你写的代码猜你可能错的地方
首先 openfile方法 从参数字符看应该是想要要求用户输入一个文件名称 但方法是在获取一个文件名为 enter the filename:的BufferedReader 这样连文件都不算读。 readint也是一样。如果只是单纯输出csv的某一列就不需要用动态数组。
去掉字符符号的方法 也是有问题的 你的方法是如果是字母开头的字符串就直接返回,如果不是就截取字符串第 1 到 字符串总长-2的这部分字符。和注释不同。
给你写了一个 输入文件名 和 列 然后输入csv该列的值的方法 你参考一下吧。注意没有处理一样,也没有判断 列的位置是否不存在 自己判断一下。
public static void main(String[] arg) throws IOException{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String filename=getFilename(br);
int index =readInt(br);
System.out.println(filename+":"+index);
br.close();
extractColumn(filename,index);
}
public static String getFilename(BufferedReader br) throws IOException{
System.out.print("Enter the filename:");
String filename=br.readLine();
return filename;
}
public static int readInt(BufferedReader br) throws IOException{
System.out.print("Enter the column index:");
String s=br.readLine();
int index=-1;
try{
index=Integer.parseInt(s);
}catch(NumberFormatException e){}
return index;
}
public static void extractColumn(String filename,int index) throws IOException{
BufferedReader br=new BufferedReader(new InputStreamReader(new FileInputStream(filename)));
String s;
String[] ss;
while((s=br.readLine())!=null){
ss=s.split(",");
//注意index-1 超过csv列的长度 则返回最后一列的数据
if(index-1 < ss.length)
System.out.println(ss[index-1]);
else
System.out.println(ss[ss.length-1]);
}
br.close();
}