2 回答

TA贡献1858条经验 获得超8个赞
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();

TA贡献1862条经验 获得超6个赞
您可以获取您的号码并将其与列表中的所有号码进行比较。然后,如果部分差异比差异小,您可以将数字存储为结果。
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);
}
}
添加回答
举报