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