使用java查找数组中与给定数字最近的最大数字
这是我到目前为止为寻找给定数的最近大数所做的尝试,但我得到的是数组中所有数的最大值,请帮助解决这个问题。如果对于{1,2,3,5,10,100}和givennumber=9,您的算法应该返回10,它工作正常 但是我发现数学有不同的问题。如果你有{1,2,3,10,100}和givenNumber=5,那么距离为3,5=2,距离为10,5=5。但我想结果是你需要10个,而不是3个 例如,您的算法可以如下所示:使用java查找数组中与给定数字最近的最大数字,java,Java,这是我到目前为止为寻找给定数的最近大数所做的尝试,但我得到的是数组中所有数的最大值,请帮助解决这个问题。如果对于{1,2,3,5,10,100}和givennumber=9,您的算法应该返回10,它工作正常 但是我发现数学有不同的问题。如果你有{1,2,3,10,100}和givenNumber=5,那么距离为3,5=2,距离为10,5=5。但我想结果是你需要10个,而不是3个 例如,您的算法可以如下所示: float[] array={a,b,c,d}; float distance = Ma
float[] array={a,b,c,d};
float distance = Math.abs(array[0] - givennumber);
int idx = 0;
for(int c = 1; c < array.length; c++) {
float cdistance = Math.abs(array[c] - givennumber);
if (cdistance < distance) {
idx = c;
distance = cdistance;
nearestlargest=array[idx];
}
}
return nearestlargest;
最近的大数是多少?你的意见是什么?你得到了什么输出?你期望什么样的产出?为什么?当您在调试器中单步执行此操作时,逻辑与您想要的逻辑有何不同?1什么是a,b。c、 d?2为什么循环开始1?3给定的数字和最近的最大数字是多少。请看**4**带有完整示例的输入/输出应有帮助,因此请查看,您能否提供数组示例、给定数字、最接近最大值的实际值和例外值?可能重复的是我想要最接近的最大值,而不是最小值,我试着将if条件改为ifcdistance>distance,然后我得到了所有数字中最大的一个,即;100,但不是最近的最大值,即:;10,那么我应该在代码中做什么更改才能得到答案10呢
float distance = Float.MAX_VALUE; //use max distance as initial value to compare
int idx = -1; // use -1 instead of 0, because array can be without nearest largest (101 for example above)
for(int c = 0; c < array.length; c++) {
float cdistance = array[c] - givennumber; // calculate a distance
if (cdistance > 0 && distance > cdistance) { // we are interesting just in positive distances for largest numbers
distance = cdistance;
idx = c;
}
}
if (idx < 0) {
return Float.NaN; //return NaN if array doesn't contain a nearest largest (you can use Float.isNaN() to check result of function)
} else {
return array[idx]; //return nearest largest
}