大家好我在以下路径C:/ Users / Marc / Downloads / vector25中有一个文本文件,其中包含以下格式的逗号分隔值
-6.08,70.93,-9.35,-86.09,-28.41,27.94,75.15,91.03,-84.21,97.84, -51.53,77.95,88.37,26.14,-23.58,-18.4,-4.62,46.52,-19.47,17.54, 85.33,52.53,27.97,10.73,-5.82,
我如何阅读此文本文件并将这些双打存储在数组中?
我目前正在考虑尝试使用缓冲读卡器,但到目前为止,答案中没有人能指出我正确的方向吗?
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Scanner;
public class subvector {
public static void main(String[] args){
FileReader file = null;
try {
file = new FileReader("C:/Users/Marc/Downloads/vector25");
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
ArrayList<Double> list = new ArrayList<Double>();
int i=0;
try {
Scanner input = new Scanner(file);
while(input.hasNext())
{
list.add(input.nextDouble());
i++;
}
input.close();
}
catch(Exception e)
{
e.printStackTrace();
}
for(double k:list){
System.out.println(k);
}
}
答案 0 :(得分:3)
Scanner.nextDouble()
默认使用空格作为分隔符。您的输入以逗号作为分隔符。在调用input.useDelimiter(",")
之前,您应该使用input.hasNext()
将逗号设置为分隔符。然后它应该按预期工作。
答案 1 :(得分:3)
您应该使用分隔符
Scanner input = new Scanner(file);
input.useDelimeter(",");
答案 2 :(得分:0)
我认为您的代码段不适用于指定的数据,即-6.08,70.93,-9.35,-86.09,-28.41,27.94,75.15,91.03,-84.21,97.84,-51.53,77.95,88.37,26.14, - 23.58,-18.4,-4.62,46.52,-19.47,17.54,85.33,52.53,27.97,10.73,-5.82,
但是你的程序可以很好地处理这些类型的数据:
19.60 63.0 635.00 896.63 47.25
我已修改您的程序并使用您的数据进行测试。它按预期工作。
public static void main(String[] args) {
FileReader file = null;
try {
file = new FileReader("D:\\log4j\\vector25.txt");
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
ArrayList<Double> list = new ArrayList<Double>();
int i=0;
Double d= null;
try {
BufferedReader input = new BufferedReader(file);
String s=null;
while((s=input.readLine())!=null) {
StringTokenizer st = new StringTokenizer(s,",");
while(st.hasMoreTokens()) {
try {
d = Double.parseDouble(st.nextToken());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
list.add(i, d);
}
}
input.close();
} catch(Exception e) {
e.printStackTrace();
}
for(double k:list) {
System.out.println(k);
}
}
如果你更新了任何内容,请查看它并告诉我。
这是我在stackoverflow上的第一个POST。
谢谢,Prasad