Java:意外类型错误

use*_*722 -1 java string compiler-errors

有人可以帮我理解为什么我会遇到"意外类型错误"吗?

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

我在第6和第7行得到错误.我无法弄清楚为什么,我会感谢你的帮助!

nul*_*ull 5

charAt()返回角色.它不是左侧操作数,也就是说您无法为其赋值. Strings是不可变的,这意味着你无法改变它们(这似乎是你的意图).相反:创建一个新的String并添加到该String.

如果这让你感到困惑,我会尝试详细说明:赋值运算符采用右边的任何东西并尝试将其推入左侧的任何内容.

这里的问题是,当你试图将其他东西推入其中时,有些东西不喜欢它.你不能把你想要的一切都放在左边.好吧,你可以尝试:

"everything" = 5;
Run Code Online (Sandbox Code Playgroud)

但这不起作用,也不是这样:

"everything" = 42;
Run Code Online (Sandbox Code Playgroud)

抛开最后一个片段失败对宇宙和所有事物的暗示,你手头的问题charAt()也是在赋值运算符左侧不喜欢它的事情之一.我担心charAt()在左侧没有办法变成喜欢它的东西之一.一个星期后,在没有任何植物但只有太阳能冰箱充满牛排的荒岛上搁浅,这可能有效:

vegetarian = meat;
Run Code Online (Sandbox Code Playgroud)

即使素食主义者不喜欢它,他也会接受他的情况在=操作员的左侧.他吃了一些牛排.但是,这并不适用于您正在尝试的内容.没有这样荒凉的岛屿charAt().