.csvファイルから取得するトークンから、ArrayList
をJavaで作成する際に問題が発生しました。私は何時間も成功していないことを理解しようとしてきました。 ArrayList
を作成しなければ、私のすべてのトークンは問題なく印刷されますが、それらを追加するにはArrayList
を作成すると問題が発生します。各行に60以上の行と9個のトークン(文字列)で構成された.csvファイルについては、ArrayList
に追加する前に印刷していますが、ArrayListを作成してトークンを追加した後は、私はNoSuchElementException
に入る前に少数のトークンを使います。.csvファイルからJavaのArrayListにトークンを追加する
これは、すべて私のコードです:
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());
以外の方法でリストするst.nextToken()
をypecasting、およびst.nextToken()
に変数を割り当て、そのような:
token = st.nextToken().toString(); //defined as string type outside loop
list.add(token);
...しかし、これらのアプローチのどれも動作するようには思えません。
このプログラムの目的は、着信する.csvファイル内のすべてのトークンを取り出し、後で使用するためにきちんとArrayList
に入れることです。私はまだJavaにはまだ初心者ですが、ジェネリックスがこの問題を解決するうえでどのように役割を果たすかについてはまだ不明です。私が理解しているように、StringTokenizer
は 'string'タイプですが、私はを使用してArrayList
のトークンを<Strings>
で入力する必要がありますが、その方法はわかりません。どんな助け/ヒント/フィードバックも非常に高く評価されています!
私はそれを逃したとは思わない。みんな、ありがとう! – spacetree