Java 数组中的下一个最近数

Java 数组中的下一个最近数,java,Java,我需要帮助查找数组中下一个最近的数字,从第一个位置开始,一直到数组结束。我正在寻找最大的数字,最接近的目标数字。最大值应返回Integer.MAX_值 例如: int[] numbers = {12, 42, 13, 56, 41, 50, 100, 60}; 会回来吗 12 : 13 42 : 50 13 : 41 56 : 60 41 : 42 50 : 56 100 : MAX_VALUE 60 : 100 我成功地编写了nested for循环,它返回了下一个最大的数字,但我一辈

我需要帮助查找数组中下一个最近的数字,从第一个位置开始,一直到数组结束。我正在寻找最大的数字,最接近的目标数字。最大值应返回Integer.MAX_值

例如:

int[] numbers = {12, 42, 13, 56, 41, 50, 100, 60}; 
会回来吗

12 : 13
42 : 50
13 : 41
56 : 60
41 : 42
50 : 56 
100 : MAX_VALUE
60 : 100
我成功地编写了nested for循环,它返回了下一个最大的数字,但我一辈子都不知道如何返回与目标数字最接近的下一个最大的数字

int next = 0;

for (int i = 0; i < numbers.length; i++) {

  for (int j = i + 1; j < numbers.length; j++) {

        if (numbers[i] < numbers [j]) {
          next = numbers[j];
          break;
        }
  }
  System.out.println(numbers[i] + ":" + next);
}

再取一个临时数组,将x复制到temp&sort temp中,并在temp显示屏上迭代x和keeo计数器,使其与temp最接近。

最简单的方法是使用方法对数组进行排序。然后,对于每个元素,您只需为最后一个元素选择下一个MAX_值

for (int e0 : x) {
    int eMin = Integer.MAX_VALUE;
    for (int e1 : x) {
        if (e1 > e0 && e1 < eMin) {
            eMin = e1;
        }
    }
    if (eMin == Integer.MAX_VALUE) {
        System.out.println(e0 + " : MAX_VALUE");
    } else {
        System.out.println(e0 + " : " + eMin);
    }
}
如果必须使用循环,则对于每个元素,在数组中找到大于当前元素的最小元素

for (int e0 : x) {
    int eMin = Integer.MAX_VALUE;
    for (int e1 : x) {
        if (e1 > e0 && e1 < eMin) {
            eMin = e1;
        }
    }
    if (eMin == Integer.MAX_VALUE) {
        System.out.println(e0 + " : MAX_VALUE");
    } else {
        System.out.println(e0 + " : " + eMin);
    }
}

没有人是安全的……如果你成功地编写了一些代码,为什么不展示一下你所拥有的,并更详细地解释一下你在代码中缺少什么?——@Andreas感谢tipI,我认为你得到的结果是错误的,因为我的代码返回{12=13,42=50,13=41,56=60,41=42,50=56,100=2147483647,60=100}。你错过了13:41的映射,而你50:60的映射应该是50:56哎哟。。。谢谢你谢谢你的帮助!我可以使用Arrays.sort完成此操作。