OK.first readAll()は、newline char(csvファイルの次の行)を見るまで0から配列インデックスのトークン化Stringを保存し、0から再スタートすることを認識しました。文字列は連続した配列で保存されます。ので、ここでopencsvからの連続リストのリスト
import au.com.bytecode.opencsv.CSVReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.List;
public class ReadTest {
private static String data0 = "U:\\test-csv1.csv";
private static String [] longArray = new String[50];
private static String[] aString;
private static List<String> longStr = new java.util.ArrayList<String>();
private static int arrayCtr = 0;
private static void copyArray(String aTemp){
longStr.add(arrayCtr, aTemp);
System.out.println(arrayCtr);
arrayCtr++;
}
private static void printElements(){
for(int no =15;no<= 25;no++)
System.out.print("\nelNo "+no+" is: "+longStr.get(no));
System.out.println();
}
public static void main(String[] args) throws IOException {
CSVReader reader1 = new CSVReader(new FileReader(data0),';');
List aList;
while ((aList = reader1.readAll())!= null){
int outer= 0;
String aTemp;
String [] longArray = new String[50];
iはループがlongStrと呼ばれるリストにコピーするトークン化文字列をコピーしてください。
for (int counter= 0;counter <aList.size();counter++){
String [] tempStr = (String[]) aList.get(counter);
for (int j = 0; j < tempStr.length; j++){
aTemp = tempStr[j];
copyArray(aTemp);
// System.out.print(tempStr[j]);
// System.out.println();
System.out.print("strNo: " + j+"="+tempStr[j] + " "+"\n");
System.out.print("TEMP="+aTemp+"\n");
}
これは、行数を取得するためのカウンタです。
System.out.println("loop for no. of element:"+(++outer));
System.out.println();
printElements();
}
printElementsは、longStrの要素を一覧表示する方法です。
longStrのすべての要素をリストする際に問題があります。これまでのところ、私はトークン化されたStringをreadAll()からlongStrのような連続配列に整理しようとしました。 readAll()がcsvファイルの読み込みを終了した後に要素を出力しようとすると、printElements()から要素を連続的に出力します。どうすればこの問題を解決できますか?while
以外のprintElements()はどこに置くことができますか?私はindexoutofboundのようなエラーが出ます。
私はあなたの投稿をちょっと整理しましたが、根本的に私は依然としてあなたが求めていることを理解していません。慣れていない人の文脈からあなたの投稿を再読みして、それをより明確に表現することを考えてみてください。 (コードの大きなブロックではなく、あなたの問題から始めてください) –
あなたのコードは何をしようとしていますか?ちょうど推測すると、おそらく少ないコードで同じことを達成することができます。あなたのループをforeachスタイルに変更します:for(String x:aList){// do something} – Bohemian