我对编程和java非常陌生,但我有一项任务,我必须创建一个打开并读取输入文本文件的程序。 写入的整数,将文本文件的编号读入我创建的整数数组,将数组作为参数传递给将数组从低到高排序的方法,然后将这些排序的数组编号写入输出文件。输出文件还应显示所有整数的平均值,使用循环计算,并放在排序的整数列表的末尾。
以下是我到目前为止的情况。我似乎无法弄清楚如何正确地将数组排序并发送回主函数。我也不清楚如何获得和输出平均值。如果有人可以提供帮助,我会非常感激。 提前谢谢。
FrameLayout
答案 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;