【问题标题】:Java finding number in list with smallest difference to given number [duplicate]Java在列表中查找与给定数字差异最小的数字[重复]
【发布时间】:2019-06-21 22:15:52
【问题描述】:

我的问题可能是微不足道的,但我无法破解它。假设我们有一个数字列表: [-1, -2, 1, 2, 8, 9, 13] 我需要找到一个与给定数字(正面或负面)差异最小的一个,比如说 5。有没有一种简单的方法可以做到这一点?

【问题讨论】:

  • 你已经做了什么,你遇到了什么困难?
  • 还有另一个(这次是 Java):stackoverflow.com/questions/13318733/…
  • 请求家庭作业帮助的问题必须包括您迄今为止为解决问题所做的工作摘要,以及对您在解决它时遇到的困难(help centerHow to Ask)。

标签: java


【解决方案1】:
numbers.stream()
   .mapToInt(i -> i-targetNumber)
   .map(Math::abs)
   .min()
   .get() + targetNumber;

这样的?

家庭作业:也能正确地得到负数:)

编辑:我不能离开它...怎么样:

numbers.stream()
    .min((i1,i2) -> Math.abs(i1-target)-Math.abs(i2-target))
    .get();

【讨论】:

    【解决方案2】:

    您可以获取您的号码并将其与列表中的所有号码进行比较。然后,如果部分差异比差异小,您可以将数字存储为结果。

    public class Home {
    public static void main(String[] args) {
      List<Integer> list = Arrays.asList(-1,-2,1,2,8,9,13);
      Scanner s = new Scanner(System.in);
      int number = s.nextInt();
      int result = 0;
      int differencePartial;
      int difference = 1000;
    
    
      for (Integer i : list) {
        if (number > i) 
            differencePartial = number - i;
        else
            differencePartial = i - number;
        if (differencePartial < difference) {
            difference = differencePartial;
            result = i;
        }
    
    }
    
    System.out.println(result);
    }
    }
    

    【讨论】:

      猜你喜欢
      • 2018-01-02
      • 2016-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-20
      相关资源
      最近更新 更多