有人可以帮我理解为什么我会收到“意外类型错误”吗?
if(s.charAt(i-1) == ' '){
String sub = s.substring(i, s.indexOf(' ')+1);
for(int j = 0; j < sub.length()/2; j++){
char temp;
temp = sub.charAt(j);
sub.charAt(j) = sub.charAt(sub.length()-1-j);
sub.charAt(sub.length()-1-j) = temp;
sub = sub+" ";
complete = complete+sub;
}
}
我在第6和第7行收到错误。我无法弄明白为什么,我会感谢你的帮助!
答案 0 :(得分:5)
charAt()
返回角色。它不是左侧操作数,也就是说您无法为其赋值。
String
是不可变的,这意味着你无法改变它们(这似乎是你的意图)。
相反:创建一个新的String并添加到该字符串。
如果这让你感到困惑,我会尝试详细说明:赋值操作符取右边的任何内容并尝试将其推入左侧的任何内容。
这里的问题是,当你试图将其他东西推入其中时,有些东西不喜欢它。你不能把你想要的一切都放在左边。好吧,你可以尝试:
"everything" = 5;
但这不起作用,这也不起作用:
"everything" = 42;
将最后一个片段失败意味着什么留给宇宙和所有事物,你手头的问题是charAt()
也是在赋值运算符左侧不喜欢它的事情之一。
我担心没有办法将charAt()
转变为左侧那样喜欢它的东西之一。在没有任何植物但只有太阳能冰箱装满牛排的荒岛上搁浅一周后,这可能会有效:
vegetarian = meat;
即使素食者不喜欢那里,他也会接受他的情况在=操作员的左侧。他吃了一些牛排。
但是,这并不适用于您正在尝试的内容。 charAt()
没有这样荒凉的岛屿。
答案 1 :(得分:1)
在这些行中,您试图设置函数返回的值。这是非法的
sub.charAt(j) = sub.charAt(sub.length()-1-j);
sub.charAt(sub.length()-1-j) = temp;
据我所知,你试图改变String的字符,但字符串是可以改变的对象。因此,您需要使用StringBuffer来设置值。