[英]Arrays and read and write text files issue - Java
这是我要做的...
输入文件:dishin.txt
输出文件:dishout.txt
时限:1秒
您不喜欢统计学家,统计学家也不喜欢您。 自从四岁那年,生活精算师开始向您的冰淇淋中扔沙以来,您就与那些数量众多的抽搐者展开了一场缓慢升级的战争。 但是,这一切都会改变。
经过许多不眠之夜,您构想了最终的复仇:在自己的游戏中击败他们。 利用您的计算机编程技能,您将编写出如此详尽,如此完整的免费软件统计软件包,以至于全世界的统计学家都将失业。 它将能够预测天气模式,计算预期寿命,甚至玩完美的扑克游戏。
但是,首先,您必须实现自动换行。 但是,此任务相当复杂,本质上不是很数学,最终也不是很重要。 更紧急的是,您还需要实施一些基本数据分析。 具体来说,您决定编写一个测试程序,该程序采用一个数据集(一个整数列表),并计算以下扩展率:
最小值 -列表中的最小值。 例如,数字{5, 6, 5, 3}
5,6,5,3 {5, 6, 5, 3}
的最小值为3
。
最大值 -列表中的最大值 。 例如,数字{5,6,5,3}的最大值为6。
平均值(或平均值) -定义为列表中所有内容的总和除以列表中项目的数量。 例如,数字{5, 6, 5, 3}
(5+6+5+3)/4 = 19/4 = 4.75
{5, 6, 5, 3}
的平均值为(5+6+5+3)/4 = 19/4 = 4.75
。 但是,为简单起见,系统会要求您将所有答案四舍五入到最接近的整数。 因此,四舍五入后的数字{5, 6, 3, 3}
5,6,3,3 {5, 6, 3, 3}
的平均值为4
。
输入的第一行将包含一个整数n(1 <= n <= 1,000),即数据集的大小。 接下来的n行将描述数据集。 这些行中的每一行都包含一个介于0和1,000,000(含)之间的整数。
输出文件应包含三个由空格分隔的整数:数据集的最小值,最大值和平均值。
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;
public class Solution {
public static void main(String[] args) throws IOException {
///home/sebastian/workspace/Informatics Competition/src/
Scanner input = new Scanner(new File("/home/sebastian/workspace/Informatics Competition/src/dishin.txt"));
BufferedWriter output = new BufferedWriter(new FileWriter("/home/sebastian/workspace/Informatics Competition/src/dishout.txt"));
ArrayList<Integer> numbers = new ArrayList<Integer>();
while(input.hasNextInt()) {
numbers.add(input.nextInt());
}
numbers.remove(0);
Object max = Collections.max(numbers);
Object min = Collections.min(numbers);
System.out.println(numbers);
int sum = 0;
for (int i = 0; i<=numbers.size(); i++) {
sum += (int)(numbers.get(i));
}
int mean = (int)(sum / numbers.size());
output.write(String.valueOf(min+" "+max+" "+mean));
input.close();
output.close();
}
}
这是错误:
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 4, Size: 4
at java.util.ArrayList.rangeCheck(ArrayList.java:638)
at java.util.ArrayList.get(ArrayList.java:414)
at Solution.main(Solution.java:35)
它应该是
for (int i = 0; i<numbers.size(); i++)
代替
for (int i = 0; i<=numbers.size(); i++)
index
必须小于数字的大小。 索引从0开始到(大小-1)
如果您有兴趣迭代数组的每个项目,请使用For-Each循环来避免此类问题。
Java5中引入的for-each循环。 它主要用于遍历数组或集合元素。 for-each循环的优点在于,它消除了发生错误的可能性,并使代码更具可读性。
for(data_type variable : array | collection){}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.