首页 > 解决方案 > 从文本文件写入时,数组只会将值设置为“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 中输入了正确的参数(文件目标)。

提前致谢!

标签: javaarraysloopswhile-loop

解决方案


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

您有 2 个选项来解决此问题。

  1. 使用 ArrayList:使用ArrayList<int>对象保存第一个循环中的数字。该列表随着数字的输入而增长,因此您在制作此对象之前不需要知道行数,而不是需要知道这一点来制作数组。
  2. 再次扫描文件:在循环之间关闭以前的文件阅读器和扫描仪并创建一个新的。这个新的扫描器将再次指向文件的开头,第二个循环将顺利运行。

推荐阅读