有一组数 :2,14,8,15,25,6,18
要找跟某个值最接近的数(比如10,最近的应该是8),应该怎么做

解决方案 »

  1.   

    将10也放到数组中;
    通过Arrays.sort()排序;
    然后比较10之前和之后的数与10的差
      

  2.   

    package tools;import java.util.Arrays;public class Dds {
    public static void main(String args[]) {
    int test = 10;
    int[] group = {2,14,8,15,25,6,18,10 };
    Arrays.sort(group);
    int bh3 = 0;
    for (int i = 0;i < group.length;i++) {
    System.out.println(group[i]);
    if (group[i] == test) {
    if (i == 0) {
    bh3 = group[i + 1];
    } else if (i == group.length) {
    bh3 = group[i - 1];
    } else {
    bh3 = (group[i-1] < group[i+1]) ? group[i-1] : group[i+1];
    }
    }
    }
    System.out.println("ddddd " + bh3);
    }
    }
      

  3.   

    4楼的不太完整...>_<package test;import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.List;public class Test {
    public static void main(String args[]) throws Exception{
    Test test = new Test();
    List list = test.getNearNum(4);
    for(int j =0;j<list.size();j++){
    System.out.println(list.get(j));
    }
    }
    public List<Integer> getNearNum(Integer nearNum){
    Integer a [] ={2,14,8,15,25,6,18 };
    Arrays.sort(a);
    Integer c = 0;//相差值
    Integer d = 0;//最接近值(小)
    Integer e = 0;//最接近值(大)
    List <Integer> list = new ArrayList<Integer>();
    for(int i = 0;i<a.length;i++){
    Integer cc = java.lang.Math.abs(a[i]-nearNum);
    if(c==0){
    c =cc;
    d = a[i];
    }
    if(cc==0){
    d = a[i];
    break;
    }else if(cc<c){
    c = cc;
    d = a[i];
    }else if (cc==c){
    e = a[i];
    }else if(cc>c){
    break;
    }
    }
    list.add(d);
    if(e!=0&&e!=d){
    list.add(e);
    }
    return list;
    }
    }