2013-11-26 44 views
0

我想做一个布尔方法,但它不承认我有一个返回语句。我该怎么办?不能返回一个if语句,使用布尔值

public boolean isThreeKind(int rankHist[]) { 
    for (int i=0;i<=13;i++){ 
     if (rankHist[i]>=3){ 
      return true; 
     }else{ 
      return false; 
     } 

    } 
} 
+3

添加返回false(或)返回true(无论适用于您的)在上次}之前;你的代码应该包含所有可能的执行路径的return语句。 – kosa

+1

因为你不确定for循环会被执行,所以你需要在你的方法结尾添加一个return语句(想象一下:'for(int i = 15; i <= 13; i ++)') –

+3

另外,'if(someCondition){return true; } else {return false; }'可以缩短为'return someCondition'。你应该总是喜欢第二种形式。就你而言,'return rankHist [i]> = 3'。 – yshavit

回答

0

我想他想要的是,如果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 
} 
0

在java中,您总是需要跟踪方法可以退出的任何地方。如果它可以在没有返回声明的情况下退出,您将看到该错误。

因此,对于您的代码,修改它,让它看到它,你就需要把它说:

public boolean isThreeKind(int rankHist[]) { 
    for (int i=0;i<=13;i++){ 
     if (rankHist[i]>=3){ 
      return true; 
     }else{ 
      return false; 
     } 

    } 
return false; 
} 

或真,如果你宁愿这一点。

0

您应该避免多重返回语句。
您可以使用标志。在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; 
} 
2

您的代码是没有意义的。如果你总是要在循环内运行一次代码,那么循环就没有意义了。我想你一定误解了。你想做什么?

2

假设方法只返回truefalse如果是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; 
} 
1

这是字面上你的代码是做现在:

public boolean isThreeKind(int rankHist[]) { 
    return rankHist[0] >= 3; 
} 

也就是说它,我假定这是不是你正在试图做的事。所以如果你告诉我们你实际上想要完成的事情,我们可以帮助你更多。