【发布时间】:2020-09-28 07:50:39
【问题描述】:
我是 Java 新手,并且是可选的。这里我有一个未排序的素数数组。
List<Integer> primes = Arrays.asList(3, 7, 5, 2, 13, 11);
int getPrime()
{
primes.sort(); //using Comparator
return (primes.stream()
.filter(prime -> prime>15)
.findFirst()
.orElseThrow(() -> new NoSuchElementException("No such number")));
}
案例 A:我想返回第一个素数 > 7 - 效果很好。
案例B:我想返回第一个素数> 15
案例C:列表为空/由于某种原因,它无法访问列表。
如果是 B & C ;抛出相同的 NoSuchElementException。完全无法获取与能够获取但无法获取有效号码之间是有区别的。
如何更改此代码而不使其过于复杂以至于无法检查这些情况?
【问题讨论】:
-
为什么不在排序前检查
primes.isEmpty()?您可以在方法的开始处抛出适当的异常,前提条件检查应该在哪里。 -
我看不出有什么不同。给定一个带有素数的列表,找到一个满足特定条件的素数。如果列表为空,则列表不包含符合条件的数字。
标签: java exception nullpointerexception null optional