java - 从文本文件写入时,数组只会将值设置为“0”
问题描述
String path1, path2;
int count = 0, i = 0;
path1 = args[0];
File file = new File(path1);
FileReader reader = new FileReader(file);
Scanner inputFile = new Scanner(reader);
while(inputFile.hasNextInt()) {
inputFile.nextLine();
count++;
}
int[] array1 = new int[count];
while(inputFile.hasNextInt()) {
//inputFile.nextLine();
array1[i] = inputFile.nextInt();
i++;
}
我以前从未遇到过这个问题,但是当我尝试从仅包含 int 值的文本文件中将值写入数组时,每行一个,我的数组只返回所有“0”。而不是文本文件中的数字。我不确定它是否与我使用命令行有关,但它在我的 IDE 中输入了正确的参数(文件目标)。
提前致谢!
解决方案
请注意,两个 while 循环的退出条件是相同的。如果第一个结束,那么第二个将被跳过,因为条件立即为假。扫描仪的指针已经在文件的末尾(所有数字都已被第一个循环读取),因此没有什么可读取的了。
您有 2 个选项来解决此问题。
- 使用 ArrayList:使用
ArrayList<int>
对象保存第一个循环中的数字。该列表随着数字的输入而增长,因此您在制作此对象之前不需要知道行数,而不是需要知道这一点来制作数组。 - 再次扫描文件:在循环之间关闭以前的文件阅读器和扫描仪并创建一个新的。这个新的扫描器将再次指向文件的开头,第二个循环将顺利运行。
推荐阅读
- keras - keras中二维元素的填充序列
- android - CMake/Android 错误:“无法编译简单的测试程序”
- r - 为什么光栅包的 shapefile() 不起作用?
- python-3.x - 如何在csv中换行或分隔符?
- json - 通过配置单元中的 get_json_object 将一行分隔为具有唯一 ID 的几行
- javascript - 将数据数组转换为字符串
- c - 创建没有 malloc 的可变大小数组
- node.js - 如何在特定环境中在开发机器上启动 React App?
- xcode - 如何修复:PFLogger 类在两者中都实现/PFFile 类在两者中都实现
- openlayers - 在 OpenLayers 中,为什么 useInterimTilesOnError 行为在翻译后的 MVT 层上有所不同?