Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用java查找数组中与给定数字最近的最大数字_Java - Fatal编程技术网

使用java查找数组中与给定数字最近的最大数字

使用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

这是我到目前为止为寻找给定数的最近大数所做的尝试,但我得到的是数组中所有数的最大值,请帮助解决这个问题。

如果对于{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 = 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
    }