java - 从 Double 数字列表中获取给定值的最接近索引值

标签 java android list

我有一个 double 列表:

List<Double>  aList = Arrays.asList(100.33,300.99,600.0,900.44,1200.88,1500.15);

我需要从该列表中找到给定值的最接近的值。我尝试了以下来自 SO 另一个答案的解决方案,但到目前为止这不起作用,idx 始终为 0。

以下是我正在检查的解决方案:

private Double chekcer() {
    int myNumber = 900;
    double distance = (aList.get(0)- myNumber);
    int idx = 0;
    for (int c = 1; c < aList.size(); c++) {
        double cdistance = (aList.get(c) - myNumber);
        if (cdistance < distance) {
            idx = c;
            distance = cdistance;
        }
    }
    Log("",...);
    return aList.get(idx);
}

最佳答案

您应该使用差异的绝对值,它可能高于或低于 0

尝试

private Double chekcer() {
  int myNumber = 900;
  double distance = Math.abs(aList.get(0)- myNumber);
  int idx = 0;
  for (int c = 1; c < aList.size(); c++) {
    double cdistance = Math.abs(aList.get(c) - myNumber);
    if (cdistance < distance) {
        idx = c;
        distance = cdistance;
    }
  }
  Log("",...);
  return aList.get(idx);
}

编辑

这是我的全部代码,

public static void main(String[] args)  {

    System.out.println(chekcer());
}

private static Double chekcer() {
      List<Double>  aList = Arrays.asList(100.33,300.99,600.0,900.44,1200.88,1500.15);
      int myNumber = 900;
      double distance = Math.abs(aList.get(0)- myNumber);
      int idx = 0;
      for (int c = 1; c < aList.size(); c++) {
        double cdistance = Math.abs(aList.get(c) - myNumber);
        if (cdistance < distance) {
            idx = c;
            distance = cdistance;
        }
      }
      return aList.get(idx);
    }

输出

900.44

关于java - 从 Double 数字列表中获取给定值的最接近索引值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57703694/

相关文章:

按 list() 变量名而不是 R 中的索引重命名

java - 为什么我缺少 else 的返回语句

java - 如何在liferay中通过代码动态添加iframe

java - Failed to redefine class 当我尝试重新转换类时

java - 如何从java中包含.0的 float 中删除小数部分

android - 布局渲染问题android studio 0.8.0

java - Spring Data JPA 存储库抛出空指针

javascript - JQM 标题按钮难以点击

c# - 按最深目录对路径列表进行排序

list - 查找并保留文本文件中的所有重复行(而不是唯一行)