Java 尝试返回布尔值时缺少return语句

Java 尝试返回布尔值时缺少return语句,java,return,statements,Java,Return,Statements,我一直在java中遇到一个错误,我不知道为什么会出现“缺少返回语句”。我要做的是创建一个带有两个参数(String和char)的方法,检查char是否出现在字符串中,并根据比较返回一个布尔值。以下是我目前掌握的情况: public static boolean compare(String h, char x){ int counter = 0; for(int i = 0; i < h.length(); i++){ counter++; if(h.charAt(i) ==

我一直在java中遇到一个错误,我不知道为什么会出现“缺少返回语句”。我要做的是创建一个带有两个参数(String和char)的方法,检查char是否出现在字符串中,并根据比较返回一个布尔值。以下是我目前掌握的情况:

  public static boolean compare(String h, char x){

int counter = 0;
for(int i = 0; i < h.length(); i++){
  counter++;
  if(h.charAt(i) == 'o'){
    return true;
  }
  else
    return false;
}

  }
公共静态布尔比较(字符串h,字符x){
int计数器=0;
对于(int i=0;i
同样,控制台中的错误是“缺少返回语句”。 请注意,我不是Java方面的专家,可能我的代码中有更多错误,我为此提前道歉

编辑:不要看缩进,我只是在这里复制并粘贴代码。
编辑2:“h”在我的代码中是“Hello world”。

这是因为您的
如果
否则
条件处于for循环中。
for循环本身是一个条件循环

如果您的
if
else
未被访问,则可能会出现这种情况。 这里需要在for循环之外返回一个布尔值

示例场景: 'h'是一个空字符串。

编辑:根据您的陈述,在我的代码中,“h”是“Hello world”,编译时,编译器没有查看传递给“h”的值。
您的compare方法是一个单独的标识,它完全不限于一次使用。

您应该将布尔结果分配给变量,而不是在循环中返回它。在for循环之后添加return语句,这将解决您的问题。嗯

 public static boolean compare(String h, char x){

       int counter = 0;
       boolean flag = false;

       for(int i = 0; i < h.length(); i++){
         counter++;
         if(h.charAt(i) == 'o'){
             flag = true;
         }
         else
             flag = false;
       }
        return flag;
}
公共静态布尔比较(字符串h,字符x){
int计数器=0;
布尔标志=假;
对于(int i=0;i
因为for循环
i
如果
h.length()
0
那么for循环内部的代码是不可访问的,因此它会显示缺少返回语句的错误。

为其他代码添加大括号并检查。提示:如果h是空的,请不要在代码缩进时查看缩进,我和其他人都看不懂。如果您打算正确地使用它,您的问题就会变得很清楚。@JoeC编辑器中的代码是正确的,我不知道为什么这里会这样缩进,对不起。假设逻辑应该在
字符串
参数
h
中包含给定的
char
o
,只有
字符串
的最后一个字符为
o
时,它才会为
true
,否则返回
false
。如果我的假设是正确的,您可以使用
if-else
来代替上述逻辑(或),一旦找到
char
的第一个匹配项,就可以中断
for循环