交换阵列中的两个布尔值

时间:2014-12-10 13:10:47

标签: java arrays swap

我有一个布尔值数组。 现在我需要从position1交换项目与position2的项目;

我使用这个空白

public static void swap(boolean x, boolean z){
   writeln("swapping");
   boolean temp = x;
   x=z;
   z=temp;
}

swap(position[a],position[moves[b]);

但它不起作用。只是不换。 有什么想法吗?

4 个答案:

答案 0 :(得分:1)

是的,你需要这样做:

public static void swap(boolean[] arr, int x, int z){    
    writeln("swapping");
    boolean temp = arr[x];
    arr[x]=arr[z];
    arr[z]=temp;    
}

因为当你发送position[a]position[b]时,java会将它们的值复制到一个新参数,所以当你离开swap函数时,没有对变量进行任何更改

了解更多内容,您可以阅读java here中的pass-by-value和pass-by-ref

  

当调用方法或构造函数时,该值为   实际参数表达式初始化新创建的参数   变量,每个声明的Type,在执行主体之前   方法或构造函数。出现在标识符中的标识符   DeclaratorId可以在方法体中用作简单名称或   构造函数引用形式参数。

答案 1 :(得分:0)

传递数组和2个索引

public static void swap(boolean[] arr, int index1, int index2){
    writeln("swapping");
    boolean temp = arr[index1];
    arr[index1]=arr[index2];
    arr[index2]=temp;
}

答案 2 :(得分:0)

你传递的是简单的类型 - 你不能改变他们的价值观。 试试

public static void swap(boolean[] arr, int index1, int index2){
    writeln("swapping");
    boolean temp = arr[index1];
    arr[index1]=arr[index2];
    arr[index2]=temp;
}

答案 3 :(得分:0)

由于Java只传递值,因此您可以交换数组中的元素:

public static void swap(boolean[] a, int index1, int index2) {
    boolean tmp = a[index1];
    a[index1] = a[index2];
    a[index2] = tmp;
}

你可以称之为:

swap(position, a, moves[b]);