Java 如何将.txt文件中的double读入ArrayList
我试图从一个包含100000个double的文件中读取double,这些double以两个double的行排列,每个double之间用空格隔开。像这样:Java 如何将.txt文件中的double读入ArrayList,java,arraylist,java.util.scanner,Java,Arraylist,Java.util.scanner,我试图从一个包含100000个double的文件中读取double,这些double以两个double的行排列,每个double之间用空格隔开。像这样: 2.54343 5.67478 1.23414 5.43245 7.64748 4.25536 ... 到目前为止,我的代码是: Scanner numFile = new Scanner(new File("input100K.txt").getAbsolutePath()); ArrayList<Double> list =
2.54343 5.67478
1.23414 5.43245
7.64748 4.25536
...
到目前为止,我的代码是:
Scanner numFile = new Scanner(new File("input100K.txt").getAbsolutePath());
ArrayList<Double> list = new ArrayList<Double>();
while (numFile.hasNextLine()) {
String line = numFile.nextLine();
Scanner sc = new Scanner(line);
sc.useDelimiter(" ");
while(sc.hasNextDouble()) {
list.add(sc.nextDouble());
}
sc.close();
}
numFile.close();
System.out.println(list);
}
但当我运行程序时,它会给我一个FileNotFoundException。我知道该文件存在,我可以查看并打开它
input100K.txt
与程序一起位于src包文件夹中。是否有某个特定的文件必须在哪里才能工作
编辑:正如Evgeniy Dorofev所指出的,文件需要位于项目文件夹(src文件夹的父文件夹)中,程序才能找到它。当您创建这样的扫描仪时
新建扫描仪(新文件(“input100K.txt”).getAbsolutePath()
;您正在扫描文件路径作为输入,而不是文件本身。这样做newscanner(新文件(“input100K.txt”)
您可以尝试在刚刚阅读的行上使用split()
方法,然后将每个部分解析为双精度
。请注意,无需创建两个扫描仪
s:
Scanner sc = new Scanner(new File("input100K.txt"));
sc.useDelimiter(" ");
ArrayList<Double> list = new ArrayList<Double>();
while (sc.hasNextLine()) {
String[] parts = sc.nextLine().split(" "); // split each line by " "
for (String s : parts) {
list.add(Double.parseDouble(s)); // parse to double
}
}
sc.close();
System.out.println(list);
Scanner sc=新扫描仪(新文件(“input100K.txt”);
sc.useDelimiter(“”);
ArrayList=新建ArrayList();
while(sc.hasNextLine()){
String[]parts=sc.nextLine().split(“”;//按“”拆分每行
用于(字符串s:零件){
list.add(Double.parseDouble(s));//解析为Double
}
}
sc.close();
系统输出打印项次(列表);
更换线路
Scanner numFile = new Scanner(new File("input100K.txt").getAbsolutePath());
与
以下是一个示例程序:
public static void main(String[] args) throws FileNotFoundException {
List<Double> doubleList = new ArrayList<Double>();
Scanner scanner = new Scanner(new File("/home/visruthcv/inputfile.txt"));
while (scanner.hasNextDouble()) {
double value = scanner.nextDouble();
System.out.println(value);
doubleList.add(value);
}
/*
* for test print
*/
for (Double eachValue : doubleList) {
System.out.println(eachValue);
}
}
publicstaticvoidmain(字符串[]args)抛出FileNotFoundException{
List doubleList=新的ArrayList();
Scanner Scanner=new Scanner(新文件(“/home/visruthcv/inputfile.txt”);
while(scanner.hasNextDouble()){
double value=scanner.nextDouble();
系统输出打印项次(值);
双重列表。添加(值);
}
/*
*用于测试打印
*/
for(Double-eachValue:doubleList){
System.out.println(每个值);
}
}
看起来您没有找到所需的文件。在读取文件之前,请尝试放置文件的绝对路径或打印它,以检查它是否存在。我肯定会在开头添加一个检查,以确保文件存在并且可读,这很可能就像@luigimendoza所说的,它找不到文件。这样做,我现在得到一个FileNotFoundException
。文件应该放在我的计算机上的特定位置吗?现在,它在我的src包文件夹中,也包含该程序。请尝试将它放在project folder中,这就是问题所在。非常感谢。
Scanner numFile = new Scanner(new File("input100K.txt"));
public static void main(String[] args) throws FileNotFoundException {
List<Double> doubleList = new ArrayList<Double>();
Scanner scanner = new Scanner(new File("/home/visruthcv/inputfile.txt"));
while (scanner.hasNextDouble()) {
double value = scanner.nextDouble();
System.out.println(value);
doubleList.add(value);
}
/*
* for test print
*/
for (Double eachValue : doubleList) {
System.out.println(eachValue);
}
}