对不起,如果这是一个愚蠢的问题,可能是......这是来自codingbat(练习:everNth)
为什么这有效?
public String everyNth(String str, int n) {
String characters = "";
for (int i = 0; i < str.length(); i = i + n) {
characters = characters + Character.toString(str.charAt(i));
}
return characters;
}
但是这个没有?
public String everyNth(String str, int n) {
for (int i = 0; i < str.length(); i = i + n) {
return Character.toString(str.charAt(i));
}
}
^^给出了错误:“此方法必须返回String类型的结果”
但是,Character.string()方法是否已创建字符串?
为什么我必须添加额外的引号?谢谢你们!! ~~和平与爱情
答案 0 :(得分:4)
它与引号无关。问题是在 return
循环之后,您没有for
语句。
编译器警告您,如果永远不会输入for
循环,那么您将永远不会返回任何内容。您需要确保您的方法在所有情况下返回一个字符串值,而不仅仅是在输入循环时。
为了更好地理解,请完成您的方法,并考虑如果str
的长度为零,会发生什么。那么你的方法会返回什么?
修改强>
然而,正如WalterM所指出的那样,请记住,即使您修复了编译器错误,第二种方法的逻辑也与第一种方法的逻辑不同。第二种方法只返回字符串的第一个字符。