1

任何人都可以告诉我为什么下面的代码片段会给出找不到符号错误,这个 swap() 应该被使用,因为当给定一个数组列表名称时,它会将索引位置 1 的内容与位置 2 交换

干杯!

public static void swap(String swapArray, int location1, int location2) {
    int tempswap1 = swapArray.get(location1);
    int tempswap2 = swapArray.get(location2);
    swapArray.set(location1)=tempswap2;
    swapArray.set(location2)=tempswap1;
}
4

5 回答 5

1

错误原因:

swapArray.set(location1)

swapArray.get(location1)

由于swapArray 是一种String类型,因此类中没有set方法甚至get方法String

可能的解决方案:

如果我没记错的话, swapArray 应该是List类型。请检查并作为旁注使用IDE 类似的 Eclipse,它可以为您节省大量时间。

可能进一步有用:

更新:

    public static void swap(List swapArray, int location1, int location2) {
-------------------------------^
        int tempswap1 = swapArray.get(location1);
        int tempswap2 = swapArray.get(location2);
        swapArray.set(location1,tempswap2);
        swapArray.set(location2,tempswap1);
    }

假设您将列表传递给交换方法。

于 2013-10-15T12:05:20.390 回答
1

假设swapArray问题标题中提到的是类型列表,您需要像这样交换值

swapArray.set(location1, tempswap2); // Set the location1 with value2
swapArray.set(location2, tempswap1); // Set the location2 with value1

错误是因为swapArray.set(location1)=tempswap2;. 左边是一个方法 call( set()),它返回一个值,而你试图将另一个值分配给一个值,这是非法的。您需要在赋值运算符的 LHS 上有一个变量。


此外,这应该是/已经是实际的方法签名

public static void swap(List<Integer> swapArray, int location1, int location2)
                        ^^^^^^^^^^^^^ - This is the type of the object you're passing. You needn't give the name of that object as such.      

旁注:永远记得从 IDE 复制/粘贴代码,而不是在此处手动输入,因为您往往会出现拼写错误和语法错误。

于 2013-10-15T12:10:11.530 回答
0

我更喜欢彼得的回答。但是,如果您只是为了调用设置器(无论如何都不存在)而将字符串放入集合中,则可以使用本机代码完成所有操作。

请记住,如果您正在执行大量字符串操作,则如果您需要线程安全,则应使用 StringBuffer;如果您的程序不是多线程的,则应使用 StringBuilder。因为如前所述,字符串实际上是不可变的——这意味着每次更改字符串时,实际上都是在销毁旧对象并创建新对象。

如果起始点(例如 loc1)可以偏移 0,则此代码需要更智能一些,但本机字符串操作的一般想法是:

String x = a.substring(loc1,loc1+1);
String y = b.substring(loc2,loc2+1);
a = a.substring(0, loc1) + y + a.substring(loc1);
b = b.substring(0,loc2) + x + b.substring(loc2);
于 2013-10-15T12:31:17.313 回答
0

字符串在 Java 中是不可变的。你不能改变它们。您需要创建一个替换字符的新字符串。检查此线程: 替换字符串中特定索引处的字符?

于 2013-10-15T12:16:47.263 回答
0

你可以在这里使用一个技巧

public static <T> void swap(List<T> list, int pos1, int pos2) {
    list.set(pos1, list.set(pos2, list.get(pos1)));
}
于 2013-10-15T12:11:50.910 回答