繁体   English   中英

读取扩展为多行txt文件的双打

[英]Read doubles that extend in multiple lines of txt file

我的要求是从文本文件读取双精度数组。 显然我在定界符中出现错误,这似乎微不足道。

例:

4

0.000000000000000,0.000000000000000,1.000000000000000,1.000000000000000

其中4是双精度数组的长度,下面的值以逗号和空格分隔。

Scanner es =  new Scanner(filename);    
int numberofValues = es.readInt();
double[] Vector = new double[numberofValues];
for (int k = 0; k < numberofKnotValues; k++)
{
    knotValueVector[k] = es.nextDouble();
}

因此,最多15个双精度值可容纳在一个文本行中,我没有遇到任何问题。 但是,如果应该读取的向量具有更多值,则这些值将分成两行或更多行,如下所示:

0.000000000000000,0.000000000000000,0.000000000000000,0.125000000000000,0.250000000000000,0.375000000000000,0.500000000000000,0.625000000000000,0.750000000000000,0.875000000000000,1.000000000000000,1.000000000000000,1.000000000000000

问题是我阅读了该行的最后一双后,逗号仍保留在末尾。 当我尝试读取下一个double时,会发生错误,它不是double而是空格。

到目前为止,定界符(“,*”)似乎足以读取行的双打,但是尽管我尝试了一些类似的操作,但我找不到适合多行的行

“,s * \\ n”

“,s * \\ r”

但它们似乎无效。 因此,一些帮助将不胜感激!

由于第一个数字( 4 )与其余数字之间没有逗号,但始终有空格,请将定界符设置为:

",?\\s+"

更新

不管每行给出多少个数字,以及行是否以逗号结尾,我给出的模式似乎都可以正常工作:

String input = "13\r\n" +
               "\r\n" +
               "0.000000000000000, 0.000000000000000, 0.000000000000000, 0.125000000000000,\r\n" +
               "0.250000000000000, 0.375000000000000, 0.500000000000000, 0.625000000000000\r\n" +
               "0.750000000000000, 0.875000000000000, 1.000000000000000, 1.000000000000000,\r\n" +
               "1.000000000000000";
Scanner in = new Scanner(input);
in.useDelimiter(",?\\s+");
int count = in.nextInt();
double[] values = new double[count];
for (int i = 0; i < count; i++)
    values[i] = in.nextDouble();
System.out.println(Arrays.toString(values));

输出量

[0.0, 0.0, 0.0, 0.125, 0.25, 0.375, 0.5, 0.625, 0.75, 0.875, 1.0, 1.0, 1.0]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM