0

OK.first私は、readAll()がトークン化された文字列を0から配列インデックスに保存し、改行文字(csvファイルの次の行)が表示されて0から再開することに気付きました。トークン化された文字列を連続配列に保存したいと思います。

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];

だからここで私は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のすべての要素を一覧表示する際に問題が発生しました。これは私がこれまでに持っているものであり、longStrのようにreadAll()から連続配列にトークン化された文字列を配置しようとしました。readAll()がcsvファイルの読み取りを終了した後に要素を印刷しようとすると、printElements()から要素を継続的に印刷します。つまりノンストップです。これを解決するにはどうすればよいですか?また、printElements()を?内以外の場所に配置できwhileますか?他の場所に配置すると、indexoutofboundのようなエラーが常に発生します。

4

2 に答える 2

0

おもう

while ((aList = reader1.readAll())!= null){

無限ループです。試す

if((aList = reader1.readAll())!= null){
于 2011-06-28T12:07:37.143 に答える
0

reader.readAll()ただ電話して、そのリストを繰り返してみませんか?

List<String[]> records = reader.readAll();
for (String[] record : records) {
  //do something with each record
}
于 2011-06-28T12:08:43.990 に答える