[英]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.