为什么此代码中需要引号?

Why are the quotes necessary in this code?

嗨,抱歉,如果这是一个愚蠢的问题,可能是...这是来自 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));
}

}

^^ 给我错误:"This method must return a result of type String"

但是,Character.string() 方法不是已经创建了一个字符串吗?

为什么我必须添加额外的引号?谢谢你们!!~~和平与爱

与引号无关。问题是您没有 return 语句 for 循环之后。

编译器警告您,如果从未进入 for 循环,那么您将永远不会 return 任何事情。您需要确保您的方法 return 在 所有 情况下都是一个字符串值,而不仅仅是在进入循环时。

为了更好地理解,遍历您的方法,并考虑如果 str 的长度为零会发生什么。那么你的方法return是什么?

编辑

但是,正如 WalterM 所指出的,请记住,即使您修复了编译器错误,您的第二种方法的逻辑也与第一种方法不同。第二种方法只 return 字符串的第一个字符。