【发布时间】:2021-06-13 18:36:24
【问题描述】:
在“front22”问题的 CodingBat Java Warmup-1 上,它要求我返回一个字符串,其中前 2 个字母添加到前面和后面,就像这样。
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() 有效,但前两个给出了这些古怪的数字?
【问题讨论】:
-
因为
char是一个numeric 类型,并且由于表达式是从左到右计算的,所以前两个操作数是数字,并且是算术相加的。第三个操作数是String,它会连接所有后续操作数。