我看到了几种解决这个问题的方法。我建议使用(1)或(2),避免使用(3)和(4)。
(1):抛出异常。您的方法如下所示:
public int findSmallestNumberGreaterThanX(int a[], int x)
throws NoSuchNumberException {
// do what ever logic.
if (numFound) { return smallestNumberGreaterThanX; }
else {
throw new NoSuchNumberException();
}
}
并且会说
try {
int smallestNum = findSmallestNumberGreaterThanX(a, x);
//use smallestNum
} catch(NoSuchNumberException e) {
//handle case where there is no smallestNum
}
您还必须创建类 NoSuchNumberException:
public class NoSuchNumberException extends Exception {
public NoSuchNumberException() {}
public NoSuchNumberException(String message) {
super(message);
}
}
(2):稍微重构你的代码。
与其用一种方法做所有事情,不如让方法
public int findSmallestNumber(int a[]) {...}
然后说
int smallestNum = findSmallestNumber(a);
if (smallestNum > x) {
//use smallestNum
} else {
//handle case where there is no smallestNum > x
}
(3):设置你的返回类型为Integer,返回null。Java 会自动在 int 和 Integer 之间进行转换,并且 null 是 Integer 的有效值。只要确保在使用此方法的任何地方检查 null,因为如果您尝试将 null 强制转换为 int,它将中断。
(4):返回一个小于 x 的数。(我强烈建议您不要使用此解决方案,除非您也可以以某种方式使用该数字。)由于该数字小于 x,因此可以将其识别为错误情况。