繁体   English   中英

在数组中交换两个布尔值

[英]Swap two booleans in array

我有一个布尔值数组。 现在我需要将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]);

但这不起作用。 只是不交换。 有任何想法吗?

是的,您需要执行以下操作:

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中传值和传引用的信息

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

传递数组和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 index1, int index2){
    writeln("swapping");
    boolean temp = arr[index1];
    arr[index1]=arr[index2];
    arr[index2]=temp;
}

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM