【发布时间】:2018-03-05 18:50:14
【问题描述】:
我的问题是如何编写一个方法,将 Doubles 的 ArrayList 作为参数并返回数组列表中最接近 -3.75 的 Double。
我得到了正数 3.42 的代码,但我坚持修改它以适应 -3.75
public static double question3(ArrayList<Double> input) {
double myNum = 3.42.;
double dist = Double.POSITIVE_INFINITY;
double closest = 0.0;
for (Double s : input) {
if (Math.abs(Math.abs(s) - myNum) < dist) {
dist = Math.abs(Math.abs(s) - myNum);
closest = s;
}
}
System.out.println(closest);
return closest;
}
有什么帮助吗?还是执行此任务的更好方法?
【问题讨论】:
-
为什么你的代码中首先有任何幻数?如果你清理这个烂摊子,你会自动获得一个适用于任何数字的解决方案。
-
你为什么要
Math.abs(s)?我认为如果您删除Math.abs代码应该可以工作。 -
...如果重新分配
dist,为什么要计算两次候选距离?此外,这个方法显然不应该打印任何东西。 -
您可能希望将您的号码添加到数组中对其进行排序,然后使用它旁边的 vakue...
-
@NielsNet 不是
O(n)。