gpt4 book ai didi

java - 在 Java 中将整数四舍五入为特定整数

转载 作者:行者123 更新时间:2023-11-29 08:08:59 24 4
gpt4 key购买 nike

我有一个小问题,但我希望有人能提供帮助。假设我有一个整数数组,如下所示:

int[] = {65, 75, 85}

程序从用户那里获取一个整数输入,输出将是数组中最接近的数字。

例如:如果用户输入 68,则输出将为 65,因为 65 是最接近的数字。或者,如果用户输入 100,则输出将为 85,因为 85 最接近。

编辑:这不是家庭作业。我为自己而不是为任何人编程 :P

提前致谢,马丁

最佳答案

如果数组已排序,更有效的方法是使用二分查找。这需要 O(log n) 时间而不是 O(n) 个元素,因为它不需要检查每个值。

public static void main(String... args) {
int[] values = {65, 75, 85};
for (int find : new int[]{60, 68, 74, 88}) {
int result = closest(find, values);
System.out.println(find + " => " + result);
}
}

private static int closest(int find, int... values) {
int index = Arrays.binarySearch(values, find);
if (index >= values[0])
return index;
if (index == -1)
return values[0]; // closest
index = -index - 2;
if (index + 1 >= values.length)
return values[values.length - 1]; // closest
final int v0 = values[index];
final int v1 = values[index + 1];
return Math.abs(v0 - find) <= Math.abs(v1 - find) ? v0 : v1;
}

打印

60 => 65
68 => 65
74 => 75
88 => 85

关于java - 在 Java 中将整数四舍五入为特定整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9448084/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com