Java 数组将仅将值设置为“0”;0“;从文本文件写入时

Java 数组将仅将值设置为“0”;0“;从文本文件写入时,java,arrays,loops,while-loop,Java,Arrays,Loops,While Loop,我以前从未遇到过这个问题,但当我尝试从一个只包含int值的文本文件(每行一个)向数组写入值时,数组只返回所有“0”。而不是文本文件中的数字。我不确定这是否与我使用命令行有关,但它在我的IDE中输入了正确的参数(文件目标) 提前谢谢 请注意,两个while循环的退出条件相同。如果第一个结束,那么第二个将被跳过,因为条件立即为false。扫描器的指针已经在文件的末尾(第一个循环读取了所有的数字),因此没有什么可读取的了 您有两个选项来解决此问题 使用ArrayList:使用ArrayList对象保存

我以前从未遇到过这个问题,但当我尝试从一个只包含int值的文本文件(每行一个)向数组写入值时,数组只返回所有“0”。而不是文本文件中的数字。我不确定这是否与我使用命令行有关,但它在我的IDE中输入了正确的参数(文件目标)


提前谢谢

请注意,两个while循环的退出条件相同。如果第一个结束,那么第二个将被跳过,因为条件立即为false。扫描器的指针已经在文件的末尾(第一个循环读取了所有的数字),因此没有什么可读取的了

您有两个选项来解决此问题

  • 使用ArrayList:使用
    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++;
        }