大家好,我似乎遇到了程序问题
示例输入可以如下:
3 1 2 3
0 1 12
-12
14 1 2 3
5 1 2 3 4 5 6
4 10 20 30 40
示例输出必须是: 第1行的平均值为2.0
***错误(第2行):行为空 - 无法取平均值
***错误(第3行):标头值为0 - 无法取平均值
第4行的平均值为12.0
***错误(第5行):损坏的行 - 否定标题值
***错误(第6行):损坏的行 - 比标题更少的值
***错误(第7行):损坏行 - 行上的额外值
第8行的平均值为25.0
有3条有效的数据线 有5条腐败的数据线
这是我到目前为止所做的:
public class DataChecker
public static void main(String[] args) throws IOException {
File myFile = new File("numbers.text");
Scanner scanner = new Scanner(myFile);
int count=0,count2=0,sum=0;
int[] val = new int[50];
String line = null;
while (scanner.hasNextLine()) {
line = scanner.nextLine();
Scanner lineScanner = new Scanner(line);
count++;
while(lineScanner.hasNextInt()){
lineScanner.nextInt();
count2++;
}
if(lineScanner.hasNextInt())
val[count2] = lineScanner.nextInt();
for(int i =0;i<count2;i++) {
sum += val[i];
sum = (sum/count2);
System.out.println(sum);
}
System.out.println("There are " + count2 + " numbers on line " + count);
lineScanner.close();
count2=0;
}
scanner.close();
}
我感谢任何帮助。
答案 0 :(得分:3)
你没有对每一行的数字进行适当的计算。该算法应该是一行读取,使用扫描仪对其进行标记,然后使用整数直到不再存在。跟踪总和和看到的总数,然后取这两个总和的商得到平均值。
// your initialization code
int numLines = 0;
while (scanner.hasNextLine()) {
line = scanner.nextLine();
Scanner lineScanner = new Scanner(line);
numLines++;
int count = 0;
int total = 0;
while (lineScanner.hasNextInt()) {
total += lineScanner.nextInt();
++count;
}
if (count == 0) {
System.out.println("Line " + numLines + " has no numbers.");
continue;
}
double avg = 1.0d * total / count;
System.out.println("The average of the values on line " + numLines + " is " + avg);
lineScanner.close();
}