我正在从csv文件读入。每一行都是一行中具有该对象字段的对象。每行的最后一个值恰好是一个双精度值。如果我用scan.nextDouble()读取它,我会得到一个inputMismatchException。我假设这是因为换行符。如果我以字符串的形式读取它并不会出现问题,那么我可以尝试将它解析为双精度型,但我想知道为什么线的末尾首先会导致错误。行尾扫描器错误
该文件本身是120000行,如果我跳过每个的最后一个值,只是调用nextLine()一切正常。当我尝试阅读最后两次时,我得到错误。任何帮助都会受到欢迎。我昨晚很晚才发布这个问题,但遇到过于忙于格式化我的示例并让我的代码满足一些Google代码要求的人。我玩弄了它,缩小了它的范围,试图将最后一个值作为无法运行的双精度值读取。
我用这个作为一个扫描器:
Scanner scan = new Scanner(new BufferedReader(new FileReader("file.csv")));
scan.useDelimiter(",");
它忽略了逗号就好了,我已经尝试做了换行符的分隔符,以及,但它可怕的崩溃。从文件
3行:
0,0,Sol,-26.7,4.85,G2V,0.656,0.000005,0,0,0,0,0 0.00006,1.089009,,9.1,2.39,F5,0.482,219.740502,0.003449,4.177065,0.00000004,-0.00000554,-0.000002 0.000283,-19.49884,,9.27,5.866,K3V,0.999,45.210918,0.003365,-16.008996,-0.00000007,0.00004213,-0.0000002
第一行具有字段的正确数目。 我以为可能这些值太大而不适合,但我试图将字符串转换为double,并且刚刚意识到它试图将“0 \ n 0.00006”放入一个double。再一次,我认为它是扫描器不会将新行识别为分隔符
你能提供你的线怎么看起来像一个简短的样本? – dxdy