Java 数组将仅将值设置为“0”;0“;从文本文件写入时
我以前从未遇到过这个问题,但当我尝试从一个只包含int值的文本文件(每行一个)向数组写入值时,数组只返回所有“0”。而不是文本文件中的数字。我不确定这是否与我使用命令行有关,但它在我的IDE中输入了正确的参数(文件目标)Java 数组将仅将值设置为“0”;0“;从文本文件写入时,java,arrays,loops,while-loop,Java,Arrays,Loops,While Loop,我以前从未遇到过这个问题,但当我尝试从一个只包含int值的文本文件(每行一个)向数组写入值时,数组只返回所有“0”。而不是文本文件中的数字。我不确定这是否与我使用命令行有关,但它在我的IDE中输入了正确的参数(文件目标) 提前谢谢 请注意,两个while循环的退出条件相同。如果第一个结束,那么第二个将被跳过,因为条件立即为false。扫描器的指针已经在文件的末尾(第一个循环读取了所有的数字),因此没有什么可读取的了 您有两个选项来解决此问题 使用ArrayList:使用ArrayList对象保存
提前谢谢 请注意,两个while循环的退出条件相同。如果第一个结束,那么第二个将被跳过,因为条件立即为false。扫描器的指针已经在文件的末尾(第一个循环读取了所有的数字),因此没有什么可读取的了 您有两个选项来解决此问题
ArrayList
对象保存第一个循环中的数字。列表会随着输入的数字而增长,因此在创建此对象之前不需要知道行数,而不是需要知道行数才能创建数组您的int[]将被初始化为0s。您确定第二个while循环正在执行吗?提示:如果您已经将
.nextLine()
添加到文件末尾,为什么会出现.nextLine()
?您在第一个循环中完全读取了文件。第二个循环没有任何作用。。
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++;
}