簡體   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