所以我试图打印出我的程序中等于或高于平均水平的时间。当我将print()
添加到我的方法本身时,它工作得很好,但是当我从主方法中打印它时,它会打印所有值,除了它将打印最后一个值两次。在我得到ArrayIndexOutOfBoundsException
之前,我解决了这个问题,但显然还有一些问题没有解决。我一直坚持让这个工作一段时间,但无法修复它!我已经在网上寻找,并通过一堆论坛,并试图实施不同的建议,但我仍然无法得到它的工作。打印高于平均时间从比赛
准确地说,任何帮助或建议,将不胜感激。
public class MarathonRunner {
//Finding the average
public static double getAverageTime(int[] times) {
int sum = 0;
double average;
for (int i = 0; i < times.length; i++) {
sum = sum + times[i];
}
average = (double) sum/times.length;
return average;
}
//Finding above Average
public static int getAboveAverage(int[] times) {
int aboveAverage = 0;
for (int i = 0; i < times.length; i++) {
if ((double)times[i] >= getAverageTime(times)) {
aboveAverage = times[i];
System.out.println(aboveAverage);
}
}
return aboveAverage;
}
}
测试/演示
public class TestMarathonRunner {
public static void main(String[] args) {
int times[] = { 341, 273, 278, 329, 445, 275, 275, 243, 334, 412,
393, 299, 343, 317, 265 };
System.out.println("The average time is: " +
MarathonRunner.getAverageTime(times));
System.out.println(MarathonRunner.getAboveAverage(times)) ;
打印
341
329
445
334
412
393
343
The average time is: 321.46666666666664
341
329
445
334
412
393
343
343
喔有道理删除的System.out.println,我认为我的方法已经被设置为打印高于平均水平的所有时间,不只是最后一个,我不应该通过它继续运行吗?我需要得到它从主全部打印出来,我说的print()的方法,只是为了看它是否在工作。 – CheyBateman
好吧,在这种情况下,也许你可以让getAboveAverage返回一个包含所有的次数,都高于平均水平的int数组或列表,然后通过他们的主要方法 –
迭代认真谢谢你,现在这是有道理的。 – CheyBateman