我想做一个布尔方法,但它不承认我有一个返回语句。我该怎么办?不能返回一个if语句,使用布尔值
public boolean isThreeKind(int rankHist[]) {
for (int i=0;i<=13;i++){
if (rankHist[i]>=3){
return true;
}else{
return false;
}
}
}
我想做一个布尔方法,但它不承认我有一个返回语句。我该怎么办?不能返回一个if语句,使用布尔值
public boolean isThreeKind(int rankHist[]) {
for (int i=0;i<=13;i++){
if (rankHist[i]>=3){
return true;
}else{
return false;
}
}
}
我想他想要的是,如果13中的每个元素都≥3,他应该返回一个真实的,否则他应该返回一个错误的方式。
public boolean isThreeKind(int rankHist[])
{
for (int i=0;i<=13;i++)
{
if (rankHist[i]<3)
{
return false; // Will return false if either of the element have value <3
}
}
return true; // Will return true only if all the 13 elements have value >=3
}
在java中,您总是需要跟踪方法可以退出的任何地方。如果它可以在没有返回声明的情况下退出,您将看到该错误。
因此,对于您的代码,修改它,让它看到它,你就需要把它说:
public boolean isThreeKind(int rankHist[]) {
for (int i=0;i<=13;i++){
if (rankHist[i]>=3){
return true;
}else{
return false;
}
}
return false;
}
或真,如果你宁愿这一点。
您应该避免多重返回语句。
您可以使用标志。在for循环之外声明该标志,然后相应地赋值,并且不会错过break语句。
那样做:
public boolean isThreeKind(int rankHist[]) {
boolean value = false;
for (int i=0;i<=13;i++){
if (rankHist[i]>=3){
value = true;
break;
}
}
return value;
}
您的代码是没有意义的。如果你总是要在循环内运行一次代码,那么循环就没有意义了。我想你一定误解了。你想做什么?
假设方法只返回true
或false
如果是greater than equal to 3
, 会建议保持简单。
另外,请注意:
循环遍历i=0 to i< rankHist.length
柜面数组包含少比13元。如果它包含超过13你会遇到一个ArrayOutOfBoundException.
元素,输出可能不正确。
。
public boolean isThreeKind(int rankHist[]) {
for (int i=0;i<rankHist.length;i++){
if (rankHist[i]>=3){
return true;
}
}
return false;
}
这是字面上你的代码是做现在:
public boolean isThreeKind(int rankHist[]) {
return rankHist[0] >= 3;
}
也就是说它,我假定这是不是你正在试图做的事。所以如果你告诉我们你实际上想要完成的事情,我们可以帮助你更多。
添加返回false(或)返回true(无论适用于您的)在上次}之前;你的代码应该包含所有可能的执行路径的return语句。 – kosa
因为你不确定for循环会被执行,所以你需要在你的方法结尾添加一个return语句(想象一下:'for(int i = 15; i <= 13; i ++)') –
另外,'if(someCondition){return true; } else {return false; }'可以缩短为'return someCondition'。你应该总是喜欢第二种形式。就你而言,'return rankHist [i]> = 3'。 – yshavit