. nexttoken()遇到空格时抛出java.util.NoSuchElementException



我有一个csv文件,包含一行;

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

每当令牌遇到空格时(例如:"2013-05-25 23:59:59")就会抛出一个错误。我使用StringTokenizer

你知道这是怎么回事吗?

Btw这是我的代码;

        Scanner x = new Scanner(new FileReader("c:\test.csv"));
        StringTokenizer token = new StringTokenizer(x.next());           
        while (token.hasMoreElements())
        {
            System.out.println(token.nextElement()); 
        }

假设您的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()的字符串,参见Scanner#next()的javadoc。从javadoc,

Scanner使用分隔符模式将其输入分解为多个令牌,默认情况下匹配空格

因此next()将所有内容作为字符串返回到下一个空格。使用nextLine()代替,返回整行。

StringTokenizer token = new StringTokenizer(x.nextLine());  

我假设x是一个Iterator。其next()方法抛出该异常。如果您坚持使用StringTokenizer遗留类,那么使用x.hasNext()方法检查是否有更多的元素。

使用

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());
        }

你有无效字符(")2013-05-25 23:59:59",'后59。修改或跳过

相关内容

  • 没有找到相关文章

最新更新