Java 如何找到数组中的下一个最大数?

Java 如何找到数组中的下一个最大数?,java,Java,我很难找到数组中下一个最大的数字。例如如果给我一个数字5,从数组[1,2,3,4,5,7,4,6]我怎么发现6是下一个最大的数字呢 int numGiven = 0; //assign number that is given. numGiven = 5; int nextHighest = 0; int[] arrayNum = {1,2,3,4,5,7,4,6}; boolean nextHighestNumberIsFound = false

我很难找到数组中下一个最大的数字。例如如果给我一个数字5,从数组[1,2,3,4,5,7,4,6]我怎么发现6是下一个最大的数字呢

int numGiven = 0;

    //assign number that is given.
    numGiven = 5;

    int nextHighest = 0;

    int[] arrayNum = {1,2,3,4,5,7,4,6};

    boolean nextHighestNumberIsFound = false;

    boolean endOfLoop = false;

    while(endOfLoop == false && nextHighestNumberIsFound == false)
    {
        ++numGiven;
        for(int x = 0; x < arrayNum.length; x++) 
        {
            if(numGiven == arrayNum[x])
            {
                nextHighestNumberIsFound = true;
                endOfLoop = true;
                nextHighest = arrayNum[x];
                x += arrayNum.length;
            }
        }

        endOfLoop = true;
    }

    if(nextHighest != 0){
        System.out.println(nextHighest);
    }
    else
    {
        System.out.println("NumberSpecified is too high");
    }
int numGiven=0;
//分配给定的号码。
numGiven=5;
int nextHighest=0;
int[]arrayNum={1,2,3,4,5,7,4,6};
布尔值nextHighestNumberIsFound=false;
布尔值p=false;
while(endOfLoop==false&&nextHighestNumberIsFound==false)
{
++努姆吉文;
对于(int x=0;x
这里基本上有两个选项:

  • 您可以首先对该数组进行排序,例如使用java.utils.array提供的排序方法。然后,您只需遍历数组,首先搜索给定的数字。当你发现这一点时,你遇到的下一个数字(不是你给定的数字)就是下一个最大的数字
  • 或者,更有效的方法是:迭代数组,检查每个条目“它是否比我给定的数字大?”如果是这样,则记住该值。下次你遇到这样一个“给定的数字越大”,你就把它和你找到的上一个数字进行比较,并保留较小的一个。换句话说:您只需搜索数组中的最小数,但必须包含“大于给定数”的条件

请把这看作是对自己编码的灵感。你学习编程就是通过这样做,而不是把繁重的工作委托给别人

Arrays.stream(arr).filter(n->n>5).min().getAsInt()
请澄清:答案是针对您的问题,还是这里缺少了什么?A)我们不会在没有解释的情况下向人扔代码B)我们尤其不会为人做完整的作业C)当我们这样做时,我们会给他们一个简单的解决方案。您的代码非常复杂且难以理解,因此,只需使用
int[]arrayNum={1,2,3,4,5,7,4,8}进行测试。。。令人惊讶的是,您的代码打印的“太高”。因为。。。由于外部循环不循环,因此只需执行一次++numGiven。当然,如果外部循环会循环,它可能会永远循环。