令牌“return”上的语法错误,类型无效?

时间:2013-10-31 14:46:07

标签: java syntax

我正在尝试使用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;
}

4 个答案:

答案 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"));