0

我正在尝试从 Java 中的 codingbat.com 完成这个练习。我在这段代码中收到此错误“令牌“返回”上的语法错误,无效类型”,我无法弄清楚原因。我试图返回单词“hi”出现在给定字符串中的次数。谢谢!

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

4 回答 4

6
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)之后有一个;而不是一个,这基本上意味着身体是空的。反过来,第 (2) 行之后的行被视为循环的结束(而不是应该的),而应该结束循环的 that 则结束了方法。{ifif}count++forif}for

这使您return count;和 final}挂在类定义的中间,它不是有效的语法。

于 2013-10-31T14:48:48.597 回答
2

return count;在方法之外,你有一个不应该存在的之后,在良好的缩进和删除 this 之后;,你会得到: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;  //??
}

现在你明白为什么即使正文只包含一行,放置大括号也很重要吗?

于 2013-10-31T14:47:05.937 回答
1

if()在您的病情之后,您没有左括号。

于 2013-10-31T14:47:12.553 回答
0

语句中的条件后面有一个分号if

 if(str.substring(i, i + 2).equals("hi"));
于 2013-10-31T14:48:27.250 回答