我在ArrayList
从 .csv 文件中获得的令牌中创建 Java 时遇到了麻烦。我一直试图弄清楚几个小时没有成功。如果不创建ArrayList
,我的所有令牌都可以毫无问题地打印出来,但是当我创建一个ArrayList
来添加它们时,我遇到了麻烦。对于由 60 多行和每行 9 个标记(字符串)组成的 .csv 文件,我在添加到之前打印出我拥有的内容ArrayList
,但是在创建 ArrayList 并向它们添加标记之后,我只能打印出前几个在我遇到NoSuchElementException
.
这是我的所有代码:
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.StringTokenizer;
import java.lang.String;
import java.util.ArrayList;
import java.util.*; //probably redundant
import java.util.Scanner;
public class TTcompiler18Feb {
private static ArrayList<String> list;
public static void main(String[] args) {
try
{
//csv file containing data
String strFile = "FileWithTokens.csv";
//create BufferedReader to read csv file
BufferedReader br = new BufferedReader( new FileReader(strFile));
String strLine = "";
StringTokenizer st = null;
int lineNumber = 0, tokenNumber = 0;
list = new ArrayList<String>();
String token;
//read comma separated file line by line
while( (strLine = br.readLine()) != null)
{
lineNumber++;
st = new StringTokenizer(strLine, ",");
while(st.hasMoreTokens())
{
tokenNumber++;
System.out.println("Line # " +
lineNumber + ", Token # " +
tokenNumber + ", Token : "+
st.nextToken());
list.add(st.nextToken());
}
//reset token number
tokenNumber = 0;
}
System.out.println("The size of your list is: " + list.size());
}
catch(Exception e)
{
System.out.println("Exception while reading csv file: " + e);
}
}
}
我运行我的代码并得到以下信息:
运行 TTcompiler18Feb
Line # 1, Token # 1, Token : Row1Token1
Line # 1, Token # 2, Token : Row1Token2
Line # 1, Token # 3, Token : Row1Token3
Line # 1, Token # 4, Token : Row1Token4
Line # 1, Token # 5, Token : Row1Token5
Exception while reading csv file: java.util.NoSuchElementException
除了 之外,我还尝试以其他方式添加到我的列表中list.add(st.nextToken());
,例如使用.toString
方法、类型转换st.nextToken()
以及将变量分配给st.nextToken()
,如下所示:
token = st.nextToken().toString(); //defined as string type outside loop
list.add(token);
...但是这些方法似乎都不起作用。
该程序的目标是获取传入的 .csv 文件中的所有令牌,并将它们整齐地放入ArrayList
以供以后使用。我对 Java 还是很陌生,并且仍然不清楚泛型如何在解决这个问题中发挥作用。据我了解,它StringTokenizer
是“字符串”类型,但我需要使用 a<String>
将我的标记输入到ArrayList
由 组成的 中<Strings>
,但不知道如何输入。非常感谢任何帮助/提示/反馈!!!