-1

我有两个简单的例子来支持我的问题。我不明白为什么(1)有效,而(2)无效。在我看来,我以同样的方式使用它们。

(1)

public String frontBack(String str) {
  if (str.length() <= 1) return str;

  String mid = str.substring(1, str.length()-1);

  // last + mid + first
  return str.charAt(str.length()-1) + mid + str.charAt(0);
}

(2)

public String front22(String str) {
  str = "test";
  return str.charAt(0);
}

对于第二个,我收到一个类型不匹配错误,上面写着:无法从 char 转换为字符串。当我尝试在互联网上找到答案时,我看到 str 在所有示例中都声明为 var 类型。但它适用于第一个示例。

我错过了什么?

4

3 回答 3

4

在第一个示例中,您返回一个String. 在第二个你(尝试)返回一个char.

由于您在第一个示例中进行字符串连接,因此表达式的结果是一个字符串。

于 2012-07-15T15:50:40.807 回答
0

要将第一个字符作为字符串返回:

return str.substring(0,1);
于 2012-07-15T16:04:46.957 回答
0

您可以通过键入来修复它

return "" + str.charAt(0);

不知何故,这迫使字符变成一个字符串。

于 2015-11-03T02:15:54.003 回答