Java在列表中查找与给定数字差异最小的数字

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



肥皂起泡泡
浏览 466回答 2
2回答

猛跑小猪

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();

阿波罗的战车

您可以获取您的号码并将其与列表中的所有号码进行比较。然后,如果部分差异比差异小,您可以将数字存储为结果。public class Home {public static void main(String[] args) {&nbsp; List<Integer> list = Arrays.asList(-1,-2,1,2,8,9,13);&nbsp; Scanner s = new Scanner(System.in);&nbsp; int number = s.nextInt();&nbsp; int result = 0;&nbsp; int differencePartial;&nbsp; int difference = 1000;&nbsp; for (Integer i : list) {&nbsp; &nbsp; if (number > i)&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; differencePartial = number - i;&nbsp; &nbsp; else&nbsp; &nbsp; &nbsp; &nbsp; differencePartial = i - number;&nbsp; &nbsp; if (differencePartial < difference) {&nbsp; &nbsp; &nbsp; &nbsp; difference = differencePartial;&nbsp; &nbsp; &nbsp; &nbsp; result = i;&nbsp; &nbsp; }}System.out.println(result);}}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java