java - 扫描文件中的双精度数组 | 爪哇
问题描述
我试图扫描一个包含双精度数组的文件。我正在使用下面的代码,但它只0.0
为每个条目输出。为什么会这样,我该如何解决?
Scanner scanner = new Scanner("file.txt");
double[] array = new double[256 * 256];
for (int i = 0; i < array.length; i++) {
if (scanner.hasNextDouble()) {
array[i] = scanner.nextDouble();
}
}
System.out.println(array[0]);
我正在扫描的文件的一个示例是
0.22131145 0.22131145 0.22131145 0.22841525 0.22841525 ...
解决方案
主要问题在于 Scanner 对象的实例化。在这种情况下,您需要将一个File
对象传递给它,而不仅仅是一个字符串,并确保您指定了正确的文件路径。请参阅官方文档以获取建议。
其次,您需要使用while循环。if 语句只会执行一次,但您希望扫描程序在文件中有信息时继续查找。
第三,不要使用数组来存储值。这太冒险了,因为您需要事先知道数组的大小,这意味着您需要循环两次,这将是低效的,或者您正在硬编码,就像您在这里所做的那样。如果有人要从文件中添加或删除值,您将得到意想不到的结果。而是使用动态数据结构,例如List
.
public static void main(String[] args) throws FileNotFoundException {
String filepath = "file.txt";
Scanner scanner = new Scanner(new File(filepath));
List<Double> list = new ArrayList<>();
while (scanner.hasNextDouble()) {
list.add(Double.valueOf(scanner.next()));
}
scanner.close();
System.out.println(list.get(0));
}
推荐阅读
- networking - 如何获取其他局域网的arp表信息,包括MAC地址?
- npm - 错误 这可能不是 npm 的问题。上面可能有额外的日志输出
- if-statement - AppleScript 中的有限 IF 语句?
- python - 从数组列表中查找唯一代表(元素)的列表
- html - input type="button" 元素是只读的吗?Firefox 似乎是这么认为的:
- r - R中带有集成for循环的用户构建功能
- testing - 赛普拉斯测试字符串作为 HTML
- javascript - 使用 fetch 发布多个对象后反序列化 JsonElement
- git - 如何仅检查服务器上更新 git 挂钩的新提交?
- reactjs - 在 React/Redux 中的组件之间传递数据