我有一个简单的文本文件,内容如下:
4 5 2 7
我想让Java读取这个文件并用它创建一个数组。然而,我希望我的方法保持它的“双倍”属性。不过,我很难得到我的array命令来解决这个问题:
import java.util.*;
import java.nio.charset.StandardCharsets;
import java.nio.file.*;
import java.io.*;
public class ReadFile {
public static void main(String[] args){
gns(Arr);
}
public static double gns(String TxtFile) throws IOException {
Path path = Paths.get("C:\\Users\\me\\files\\inputfiles");
int numLines = (int)Files.lines(path).count();
Scanner fileScanner = new Scanner(new FileReader("TxtFile.txt"));
double Arr = new ArrayList<String>();
return Arr;
}
}
由于数组的类型,它一直给我一个数组。
发布于 2018-10-27 21:14:31
这将会起到作用:
double[] arr = Files.lines(Paths.get(PATH))
.flatMap(line -> Arrays.stream(line.split(" ")))
.mapToDouble(Double::parseDouble)
.toArray();
在这里,我们逐行读取文件,然后使用" "
将其拆分,解析每个数字并将其转换为一个double
数组。然后,您可以从您的方法gns(String TxtFile)
返回arr[]
。
发布于 2018-10-28 03:31:24
Scanner#nextDouble
试试下面的例子,完整的例子如下:
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import java.io.File;
import java.io.FileNotFoundException;
public class NextDouble {
public static void main(String[] args) throws FileNotFoundException {
Scanner sc = new Scanner(new File("input.txt"));
List<Double> doubles = new ArrayList<Double>();
while (sc.hasNextDouble()) {
doubles.add(sc.nextDouble());
}
System.out.println(doubles); // => [1.0, 3.0, 8.0, 6.0, 5.0]
}
}
input.txt
包含以下行:
1 3 8 6 5
您可以在doc中找到有关扫描仪的更多信息
发布于 2018-10-27 20:54:37
您正在尝试将类型为double
的Arr
设置为类型为String
的ArrayList
,这是不可能的,因为double
和ArrayList
的类型不同。
如果您想要一个替身的数组列表,请使用
ArrayList<Double> d = new ArrayList<>();
https://stackoverflow.com/questions/53022066
复制相似问题