我有一个布尔值数组。 现在我需要从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]);
但它不起作用。只是不换。 有什么想法吗?
答案 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]);