我有一个类型数组 double
由用户输入的值填充,这些值是游泳比赛的圈数。它把时间存储在 lapArray
我有几种方法,但其中一种是计算所有数字的平均值 lapArray
. 不过,我有另一种方法 getDeviationsArray
它应该找出圈速是低于平均值还是高于平均值,并填充一个名为 devArray
有了这些结果。
基本上只是从平均值中减去每圈的时间,但是如果每圈的时间比平均值高,我会得到一个结果 0
. 这可能是我的四舍五入,但我想得到一个负的结果,这将是一个缓慢的时间。
这是我的预期输出:
我有我的其他方法的前四行 getFastest
, getSlowest
, getAverage
,然后 raceTime
我已经做了。我只需要从平均值中减去圈数,然后找到一种方法,如果圈数大于平均值,它应该有一个( +
)符号和小于平均值有一个( -
)签字。
代码:
public static double[] getDeviationsArray(Double[] inputArray) {
double[] devArray = new double[inputArray.length];
double diff = 0;
for (int i = 0; i < inputArray.length - 1; ++i) {
if (inputArray[i] < getAverageSplit(inputArray)) {
diff = Math.abs(inputArray[i] - getAverageSplit(inputArray));
devArray[i] = diff;
} else {
diff = Math.abs(getAverageSplit(inputArray) - inputArray[i]);
devArray[i] = diff;
}
}
return devArray;
}
System.out.println("Here are the split-times and deviations for each lap/length:\n");
double[] devArray1 = getDeviationsArray(lapArray);
DecimalFormat df = new DecimalFormat("#.##");
int index1 = 1;
for (int i = 0; i < lapArray.length; i++) {
System.out.println("Lap or length #" + index1 + ": " + lapArray[i] + " seconds ("
+ Double.valueOf(df.format(devArray1[i])) + ")");
index1++;
}
1条答案
按热度按时间fiei3ece1#
感觉你把事情搞得太复杂了。你应该让负数差为负数,而不是使用负数差
abs
然后用“+”号格式化:还要注意,这可以通过流操作来完成,流操作可能更简单一些:
然后使用以下代码格式化一个符号和两个小数: