在关于“front22”问题的 CodingBat Java Warmup-1 上,它要求我返回一个字符串,其中前两个字母添加到前面和后面,就像这样。
front22("kitten") → "kikittenki"
这是我下面的代码,出于某种原因,前两个 charAt 返回数字而不是前两个字符。
public String front22(String str) {
return (str.length() > 1)
? str.charAt(0) + str.charAt(1) + str + str.charAt(0) + str.charAt(1)
: str + str + str;
}
返回:
front22("kitten") → "212kittenki"
front22("Ha") → "169HaHa"
front22("abc") → "195abcab"
为什么最后两个 charAt() 有效,而前两个给出了这些奇怪的数字?
答案 0 :(得分:2)
因为 char
是 16 位整数类型。前几个 char
(s) 被添加为整数(直到您遇到 String
项,然后它变成 String
连接)。基本上 +
有多种含义。使用 ""
作为第一项以强制评估为 String
(s)。喜欢,
return (str.length() > 1)
? "" + str.charAt(0) + str.charAt(1) + str + str.charAt(0) + str.charAt(1)
: str + str + str;
或以任何其他方式将第一个术语设为 String
。喜欢,
return (str.length() > 1)
? String.valueOf(str.charAt(0)) + str.charAt(1) + str + str.charAt(0) + str.charAt(1)
: str + str + str;
答案 1 :(得分:1)