Java:if 语句 returns 的样式问题?
Java: Style issue for if statement returns?
假设我有一个方法要求我遍历一个数据结构,然后 return 一个存储在特定索引中的数字,如果它等于给定的数字。如果数据结构中的两个数字相等,那么它将 return 先出现的数字。
public static int method(int value, List<Integer> list){
for (Integer i: list){
if (i == value){
return i;
}
}
}
这是一个有问题的解决方案,因为方法不一定return。我想您可以创建一个变量来存储对等效值和 return 的引用,这样编译器就不会发出有关缺少 return 语句的错误,但那将是毫无意义的代码。
有更好的方法吗?如果您正在 return 一个对象,您是 return 0 还是 return null?
我假设这是一个理论问题,否则你真的只是 return true
(它在列表中)或 false
(它不在列表中) ).您已经知道要搜索的号码,因此找到它并 returning 它不会为调用代码增加任何价值。事实上,对于这种情况,您只需使用 public boolean contains(O o)
from List
s implementation of Collection
并避免编写自己的方法。
public static boolean method(int value, List<Integer> list) {
for (Integer i: list)
if (i == value) return true;
return false;
}
所以考虑到这个学术问题,为什么不 return 你想要的列表中数字的 index 和 return -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;
}
}
return -1;
}
这样你就不必定义 "special case" return 值,自动装箱到 return null
,或定义一个新的结构来同时携带数字和一个 "success" 标志。
如果找不到正常的值,return-1表示"not found",因为正常的return是一个数组索引。
但是,如果运行循环完成确实是异常和意外的,那么就抛出异常,不要return一个神奇的值。
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");
}
看看 Collection.contains()
和 List.indexOf()
。他们处理这两种情况的方式对于 Java 来说非常惯用,Java 开发人员会立即熟悉。
假设我有一个方法要求我遍历一个数据结构,然后 return 一个存储在特定索引中的数字,如果它等于给定的数字。如果数据结构中的两个数字相等,那么它将 return 先出现的数字。
public static int method(int value, List<Integer> list){
for (Integer i: list){
if (i == value){
return i;
}
}
}
这是一个有问题的解决方案,因为方法不一定return。我想您可以创建一个变量来存储对等效值和 return 的引用,这样编译器就不会发出有关缺少 return 语句的错误,但那将是毫无意义的代码。
有更好的方法吗?如果您正在 return 一个对象,您是 return 0 还是 return null?
我假设这是一个理论问题,否则你真的只是 return true
(它在列表中)或 false
(它不在列表中) ).您已经知道要搜索的号码,因此找到它并 returning 它不会为调用代码增加任何价值。事实上,对于这种情况,您只需使用 public boolean contains(O o)
from List
s implementation of Collection
并避免编写自己的方法。
public static boolean method(int value, List<Integer> list) {
for (Integer i: list)
if (i == value) return true;
return false;
}
所以考虑到这个学术问题,为什么不 return 你想要的列表中数字的 index 和 return -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;
}
}
return -1;
}
这样你就不必定义 "special case" return 值,自动装箱到 return null
,或定义一个新的结构来同时携带数字和一个 "success" 标志。
如果找不到正常的值,return-1表示"not found",因为正常的return是一个数组索引。
但是,如果运行循环完成确实是异常和意外的,那么就抛出异常,不要return一个神奇的值。
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");
}
看看 Collection.contains()
和 List.indexOf()
。他们处理这两种情况的方式对于 Java 来说非常惯用,Java 开发人员会立即熟悉。