0

1 行を含む csv ファイルがあります。

'2013-05-25 23:59:59','-126125372','299134596','-1272989684','1826558680','-441013765','-441013765'

トークンがスペース (例: "2013-05-25 23:59:59") に遭遇するたびに、エラーがスローされます。StringTokenizer を使用しています

これがどのように起こるか考えていますか?

ところで、これが私のコードです。

        Scanner x = new Scanner(new FileReader("c:\\test.csv"));
        StringTokenizer token = new StringTokenizer(x.next());           

        while (token.hasMoreElements())
        {
            System.out.println(token.nextElement()); 

        }
4

3 に答える 3

0

x は Iterator だと思います。そのnext()メソッドがその例外をスローします。StringTokenizer レガシー クラスの使用を主張する場合は、x.hasNext()メソッドを使用して、実際にさらに多くの要素があることを確認してください。

于 2013-05-23T02:19:33.623 に答える
0

これを使って

String str = "2013-05-25 23:59:59,'-126125372','299134596','-1272989684','1826558680','-441013765','-441013765'";
        StringTokenizer st = new StringTokenizer(str);

        System.out.println("---- Split by space ------");
        while (st.hasMoreElements()) {
            System.out.println(st.nextElement());
        }

you have invalid character(") 2013-05-25 23:59:59",' after 59.change it or skip it.

于 2013-05-23T02:20:39.337 に答える
0

CSV に次の行が含まれていると仮定します。

'2013-05-25 23:59:59','-126125372','299134596','-1272989684','1826558680','-441013765','-441013765'

先ほど投稿したコード

    Scanner x = new Scanner(new FileReader("c:\\test.csv"));
    StringTokenizer token = new StringTokenizer(x.next());           

'2013-05-25を使用して文字列としてのみキャプチャします。x.next()の javadoc を参照してくださいScanner#next()。javadoc から、

Scanner は、デフォルトで空白に一致する区切り文字パターンを使用して、入力をトークンに分割します。

そのnext()ため、次のスペースまですべてを文字列として返します。nextLine()代わりに使用して、行全体を返します。

StringTokenizer token = new StringTokenizer(x.nextLine());  
于 2013-05-23T02:53:17.177 に答える