查找数组中大于设置限制的最小元素:java

查找数组中大于设置限制的最小元素:java,java,arrays,Java,Arrays,我正在尝试编写一个函数,该函数在列表中循环一次,并打印出大于设置限制的最小元素的索引 非正式地使用==这是预期的输出: 0==POSOFSMallestlementgtoet(3,新的双精度[]{7}) 3==posofsmallestelementgthoet(3,新的double[]{11,-4,-7,4,8,1}) -1==posofsmallestelementgthoet(17,新的double[]{1,-4,-5,7,8,11}) 到目前为止,我有这个。我可以找到大于设置限制的元素,

我正在尝试编写一个函数,该函数在列表中循环一次,并打印出大于设置限制的最小元素的索引

非正式地使用==这是预期的输出:

0==POSOFSMallestlementgtoet(3,新的双精度[]{7})

3==posofsmallestelementgthoet(3,新的double[]{11,-4,-7,4,8,1})

-1==posofsmallestelementgthoet(17,新的double[]{1,-4,-5,7,8,11})

到目前为止,我有这个。我可以找到大于设置限制的元素,但无法正确比较它们

public static int posOfSmallestElementGtOeT( double limit, double[] list) {
    double greater = 0;
    int pos = 0;
    for(int i=0; i < list.length; i++) {
        if(list[i] >= limit) {
            System.out.println(list[i]);
            //for testing
        }
    }
    return pos;
}
公共静态int-posofsmallestlementgtoet(双限制,双[]列表){
双倍大于等于0;
int pos=0;
for(int i=0;i=限制){
System.out.println(列表[i]);
//用于测试
}
}
返回pos;
}

当前我的函数返回大于设置限制的最后一个值。有人能告诉我如何找到最小的VAL吗。

这将解决您的问题

public static int posOfSmallestElementGtOeT( double limit, double[] list) {
    double greater = 0;
    int pos = -1;
    for(int i=0; i < list.length; i++) {
        if(list[i] >= limit) {
            if(pos == -1) // check whether its the first value above the limit in the list
                pos = i;
            else if(list[pos] > list[i]) //compare the current value with the previous smallest value
                pos = i;
        }
    }
    return pos;
}

假设
列表
至少包含一个元素:

public static int posOfSmallestElementGtOeT(double limit, double[] list) {
    double greater = list[0];

    int pos = greater >= limit ? 0 : -1;

    for(int i = 1; i < list.length; i++) {
        if(list[i] >= limit && list[i] < greater) {
            pos = i;
            greater = list[i];
        }
    }
    return pos;
}
公共静态int-posofsmallestlementgtoet(双限制,双[]列表){
双大=列表[0];
int pos=更大>=限制?0:-1;
for(int i=1;i=限制和列表[i]<更大){
pos=i;
较大=列表[i];
}
}
返回pos;
}
在网页上,写着一个好问题的标准之一是研究。你的问题给我的印象是你没有。在Internet上搜索大于最小值的最小数组元素时,出现如下结果:

min_val = 10000000
for i in test_list : 
    if min_val > i and i > k : 
        min_val = i
我在将代码翻译成java时没有遇到任何问题——尽管我根本不懂Python。区别在于您请求了元素的位置,而上面的代码返回了实际的元素值。同样,修改上述代码(将其翻译为java后)以使其返回元素索引而不是元素值似乎并不太困难

公共静态int-posofsmallestlementgtoet(双限制,双[]列表){
双最小值=双最大值;
int ndx=-1;
对于(inti=0;i=list[i]&&list[i]>=limit){
min=列表[i];
ndx=i;
}
}
返回ndx;
}
请注意,上述代码也适用于空数组。

(但是空数组将抛出一个
NullPointerException
:-)

您需要遵循查找最小值的逻辑,将初始值设置为您的限制,不要忘记数组中的所有元素都大于你的极限的情况。你想要最小元素大于或大于或等于?我想要大于或等于极限的元素。嗨,Naman,谢谢你的回答。请在您的回答中添加更多细节,解释他的实现中的错误以及您是如何解决问题的。这将提供一个更好的答案,其他人会发现它更有用:)我编辑它是为了让你改进回答的方式:)这是一个很好的做法,如果可能的话,请提供解释和示例。同样,为了提高你所做工作的质量,你所写的是正确的:)谢谢你,我现在明白了很多。我存储的是元素的索引,而不是元素本身,这允许我比较两者。谢谢
min_val = 10000000
for i in test_list : 
    if min_val > i and i > k : 
        min_val = i