我有两个简单的例子来支持我的问题。我无法弄清楚为什么(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类型。但它适用于第一个例子。
我错过了什么?
答案 0 :(得分:4)
在第一个示例中,您返回String
。在第二个中,您(尝试)返回char
。
由于您在第一个示例中执行字符串连接,因此表达式的结果是字符串。
答案 1 :(得分:0)
将第一个字符作为字符串返回:
return str.substring(0,1);
答案 2 :(得分:0)
您可以输入
进行修复return "" + str.charAt(0);
以某种方式强迫角色成为一个字符串。