如何解决如何使此方法只有1个return语句而不是2个
我的教授有一个规则,即“任何方法中最多只能有一个return语句”。现在,我在第一个项目中编写了一个非常简单的方法。我如何使它仅具有return语句而不破坏功能?
public static int find(int correctNumber,int numArray[],int lastNum) {
for (int i = 0; i < lastNum; i++) {
if (numArray[i] == correctNumber) {
return i;
}
}
return -1;
解决方法
使用另一个变量来分配值,然后在if子句中使用中断以退出循环。
public static int find(int correctNumber,int numArray[],int lastNum) {
int returnValue = -1;
for (int i = 0; i < lastNum; i++) {
if (numArray[i] == correctNumber) {
returnValue = i;
break;
}
}
return returnValue;
}
您会发现许多经验丰富的专业程序员发现使用多个return语句是完全可以接受的。
例如:这是JDK HashMap
源中的equals替代。该代码是由四位国际公认的计算机科学家编写的,其中三位拥有博士学位。
public final boolean equals(Object o) {
if (o == this)
return true;
if (o instanceof Map.Entry) {
Map.Entry<?,?> e = (Map.Entry<?,?>)o;
if (Objects.equals(key,e.getKey()) &&
Objects.equals(value,e.getValue()))
return true;
}
return false;
}
,
喜欢吗?
public static int find(int correctNumber,int lastNum) {
int correctIndex = -1;
for (int i = 0; i < lastNum; i++) {
if (numArray[i] == correctNumber) {
correctIndex = i;
}
}
return correctIndex;
,
您可以尝试以下操作:
public static int find(int correctNumber,int lastNum) {
int temNum = -1;
for (int i = 0; i < lastNum; i++) {
if (numArray[i] == correctNumber) {
temNum = i;
break;
}
}
return temNum;
}
,
public static int find(int correctNumber,int lastNum) {
int i = lastNum - 1;
while (i >= 0 && numArray[i] != correctNumber) {
i--;
}
return i;
}
这与您的代码稍有不同,如果'correctNumber'出现两次,它将找到索引较高的实例。
可以用for循环表示,但是我发现我更喜欢while循环。
public static int find(int correctNumber,int lastNum) {
int i;
for (i = lastNum-1; i >= 0 && numArray[i] != correctNumber; i--) {
}
return i;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。