将输入文件读入数组,对其进行排序,然后将其输出到文件中

时间:2017-11-13 03:07:05

标签: java arrays sorting parameters

我对编程和java非常陌生,但我有一项任务,我必须创建一个打开并读取输入文本文件的程序。 写入的整数,将文本文件的编号读入我创建的整数数组,将数组作为参数传递给将数组从低到高排序的方法,然后将这些排序的数组编号写入输出文件。输出文件还应显示所有整数的平均值,使用循环计算,并放在排序的整数列表的末尾。

以下是我到目前为止的情况。我似乎无法弄清楚如何正确地将数组排序并发送回主函数。我也不清楚如何获得和输出平均值。如果有人可以提供帮助,我会非常感激。 提前谢谢。

FrameLayout

1 个答案:

答案 0 :(得分:0)

阅读data_array时遇到的主要问题是,您每次只读到0位,因为您永远不会在i循环中增加while的值。因此,每次使用文本文件中的下一个值覆盖数组的第一个元素。

只需在i++;

下添加data_array[i] = input.nextInt();即可解决此问题

然后,我建议在此循环之外进行输出和排序,整个separation of concerns想法(注意:)理想情况下所有方法或类都根据问题完成,但是我将在此处将main方法留在此处作为示例目的。)

因此,最好将sortArray调用移到while循环之外,因为目前这会对array进行排序,然后您尝试添加下一个int到下一个位置,但由于array现在处于不同的顺序(可能是),因此它不会将其添加到您认为的位置。

您遇到的另一个问题是,您没有向dataout文件写任何内容。

有很多方法可以写入文件,但这只是一个例子。

java.io.FileWriter fr = new java.io.FileWriter("dataout.txt");
        BufferedWriter br = new BufferedWriter(fr);
        try (PrintWriter output = new PrintWriter(br)) {
            for (int j = 0; j < data_array.length; j++) {
                System.out.println(data_array[j]);
                output.write(data_array[j] + "\r\n");
            }
        }

然后您可以计算平均值,然后将其附加到文件的末尾。

但首先,您需要计算数组中所有数字的总和。

因此,您应该将其添加到先前的while循环中,而不是创建另一个循环,并在每次迭代时添加值。

sum += data_array[i];

当您使用array(即固定长度)时,您可以使用array.length()获取total变量的值,或者只添加{{ 1}}进入total++;循环。

然后您的while将有效。

完整代码:

avg = sum / total;