Java 赋值表达式的编译错误

Java 赋值表达式的编译错误,java,variable-assignment,Java,Variable Assignment,如何在数组列表中每两项切换一次 例如: “你好”,“你好”,“你”变成: “你好”,“你好”,“你”,“是” 这是我的错误(在实践中): 编译器在此处找到了它不期望的数据类型。有时,在比较值时将=误认为==时会发生此错误 意外类型 必需:变量 找到:值 list.get(i)=list.get(i+1) 意外类型 必需:变量 找到:值 获取(i+1)=温度 这就是我所拥有的: public void switchPairs(ArrayList<String> list){  

如何在数组列表中每两项切换一次

例如: “你好”,“你好”,“你”变成:

“你好”,“你好”,“你”,“是”

这是我的错误(在实践中):

编译器在此处找到了它不期望的数据类型。有时,在比较值时将=误认为==时会发生此错误

意外类型
必需:变量
找到:值
list.get(i)=list.get(i+1)

意外类型
必需:变量
找到:值
获取(i+1)=温度

这就是我所拥有的:

    public void switchPairs(ArrayList<String> list){
        String temp = "";
        for(int i = 0; i<= list.size(); i+2){
            temp = list.get(i);
            list.get(i) = list.get(i+1);
            list.get(i+1) = temp;
        }
    }
公共无效开关对(ArrayList列表){
字符串temp=“”;

对于(int i=0;i您正试图使用
get
方法的返回作为变量。与合法的数组访问表达式不同,例如
arr[i]=value
,方法调用的结果不能以这种方式使用。您必须改为使用

这将修复编译器错误,但运行它将保证出现
IndexOutOfBoundsException

如果列表大小为偶数,则当
i
达到
list.size()
时,
list.get(i)
将抛出
IndexOutOfBoundsException
。请记住,有效索引从
0
size()-1

如果列表大小为奇数,则
list.get(i+1)
将抛出
IndexOutOfBoundsException

您必须将
for
循环条件更改为在
i
i+1
出界之前停止。(增量需要
+=
才能在此处生效。)

for(int i=0;i

这将使奇数大小列表中的最后一项保持不变。

因为每个方法都返回一个
值,而不是
变量

赋值运算符的左操作数必须是变量,否则会发生编译时错误

你可以这样想: 如果我们可以通过变量的getter修改变量,那么封装就毫无意义了,因为私有属性通常有getter

总之,在这种情况下(以及许多其他情况下),您应该使用setter来获得金牌。如下所示:

list.set(i, "something you want");

你认为list.get(i)=……
应该做什么?你为什么这么认为?
for(int i = 0; i < list.size() - 1; i+=2){
list.set(i, "something you want");