Java 在数组中交换两个布尔值

Java 在数组中交换两个布尔值,java,arrays,swap,Java,Arrays,Swap,我有一个布尔值数组。 现在我需要将位置1中的项目与位置2中的项目交换 我用这个空 public static void swap(boolean x, boolean z){ writeln("swapping"); boolean temp = x; x=z; z=temp; } 及 但它不起作用。只是不要交换。 有什么想法吗?传递数组和2个索引 public static void swap(boolean[] arr, int index1, int index2

我有一个布尔值数组。 现在我需要将位置1中的项目与位置2中的项目交换

我用这个空

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

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

传递数组和2个索引

public static void swap(boolean[] arr, int index1, int index2){
    writeln("swapping");
    boolean temp = arr[index1];
    arr[index1]=arr[index2];
    arr[index2]=temp;
}
是的,您需要执行以下操作:

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中的passbyvalue和passbyref

调用方法或构造函数时 实际参数表达式初始化新创建的参数 每个声明类型的变量,在执行 方法或构造函数。中显示的标识符 DeclaratorId可以在方法体中用作简单名称或 构造函数引用形式参数


您正在传递简单类型,并且您不能更改它们的值。 试一试


由于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]);

这里的参数是通过值而不是引用传递的什么不起作用?解释。。。你得到的意外结果是什么?你们给出的参数是什么?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]);