我正在尝试使用Java中的codingbat.com完成此练习。我得到这个错误“令牌上的语法错误”返回“,无效的类型”在这一小段代码上,我无法弄清楚为什么。我试图返回单词“hi”出现在给定String中的次数。谢谢!
public int countHi(String str) {
int count = 0;
for(int i = 0; i < str.length() - 1; i++){
if(str.substring(i, i + 2).equals("hi"));
count++;
}
}
return count;
}
答案 0 :(得分:5)
public int countHi(String str) {
int count = 0;
for(int i = 0; i < str.length() - 1; i++){
if(str.substring(i, i + 2).equals("hi")); // 1
count++;
} // 2
}
return count;
}
问题是,在;
条件(1)之后,您有{
而不是if
,这实质上意味着if
正文为空。反过来,}
行(2)之后的count++
被视为for
循环的结尾(而不是if
应该是的结尾),并且应结束}
循环的for
代替方法结束。
这会使您的return count;
和最终}
悬挂在类定义的中间,而这里的语法无效。
答案 1 :(得分:2)
return count;
在方法之外,你的;
之后的if
不应该存在,经过良好的缩进并删除此;
后,你将会得到:
public int countHi(String str) {
int count = 0;
for(int i = 0; i < str.length() - 1; i++) {
if(str.substring(i, i + 2).equals("hi")) {
count++;
}
}
//Return should be here
} //Method countHI ends here
return count; //??
}
现在你明白为什么即使主体只包含一行,也可以放置大括号非常重要?
答案 2 :(得分:1)
if()
条件后,您没有左括号。
答案 3 :(得分:0)
在if
声明中有条件后有分号。
if(str.substring(i, i + 2).equals("hi"));