假设我有一个方法,要求我循环遍历数据结构,然后返回存储在特定索引中的数字(如果它等于给定数字)。如果数据结构中的两个数字相等,则返回第一个数字。
public static int method(int value, List<Integer> list){
for (Integer i: list){
if (i == value){
return i;
}
}
}
这是一个有问题的解决方案,因为该方法不一定返回。我想您可以创建一个变量来存储对等效值的引用并返回该值,这样编译器就不会发出有关缺少 return 语句的错误,但这将是毫无意义的代码。
有更好的方法吗?如果您返回一个对象,您会只返回 0 或返回 null 吗?
最佳答案
如果未找到该值是预期且正常的,则返回 -1 表示“未找到”,因为正常返回是数组索引。
但是,如果运行循环直至完成确实是异常和意外的,则抛出异常,不要返回魔法值。
public static int method(int value, List<Integer> list){
for (int j = 0; j < list.size(); j++) {
Integer i = list.get(j);
if (i == value){
return j;
}
}
throw new IllegalStateException("The method 'SomeClass.method' reach an invalid termination point");
}
关于Java:if 语句返回的样式问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28640492/