gpt4 book ai didi

java - 将 .txt 文件中的 Double 读入数组列表

转载 作者:行者123 更新时间:2023-12-02 01:57:02 25 4
gpt4 key购买 nike

所以我们有这个程序,我们必须将文本文件中的 double 值读取到 double ArrayList 中并进行某些计算。

文本文件示例:

注意:日期和 double 值之间有空格

5/05/1998 4.4

1/01/1999 -4.123

问题是我得到的结果如下:

"NumberFormatException for input string: 1/2/1950 0.0258" error.

这是我的代码:

public static void value() throws java.io.IOException{
try{
BufferedReader br = new BufferedReader(new FileReader(new File("SP500-Weekly.txt")));
ArrayList<Double>list = new ArrayList<Double>();
String line;
while((line=br.readLine())!=null){
String[] r = line.split(" ");
for(int i=0; i<r.length; i++){
double val = Double.parseDouble(r[i]);
list.add(val);
}
}br.close();
System.out.println(list.size());
}
catch(IOException io){
System.out.println("error");
}
}

最佳答案

看来您只需要 double每行上存在的值并希望将其添加到 List<Double> 中。根据您的输入,第二个值始终是您的 double 值,但您也尝试解析第一个值,即日期和 Double.parseDouble()无法解析日期中的字符,例如 / ,因此你遇到了异常。如果 double 值是您所需要的,那么只需执行以下操作即可:

try {
BufferedReader br = new BufferedReader( new FileReader( new File( "SP500-Weekly.txt"" ) ) );
List<Double> list = new ArrayList<Double>();
String line;

while ( ( line = br.readLine( ) ) != null ) {

String[] r = line.split( "\\s+" );
list.add( Double.parseDouble( r[ 1 ] ) );
}
br.close( );
System.out.println( list.size( ) );
} catch ( IOException io ) {
e.printStackTrace( );
}

然后您可以尝试使用 list变量如您所愿。

此外,如果您想更具体并检查第二个值是否实际上是数字/ double ,那么我会按照以下步骤添加一个正则表达式,以确保第二个值是数字(带或不带 - 符号) )如下:

while ( ( line = br.readLine( ) ) != null ) {
String[] r = line.split( "\\s+" );
for ( String string: r ) {
if ( string.matches( "^-?[0-9]?.?[0-9]+" ) ) {
list.add( Double.parseDouble( r[ 1 ] ) );
}
}
}

关于java - 将 .txt 文件中的 Double 读入数组列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52173951/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com