2011-03-03 110 views
0

如何使用循環切換數組中的相應元素(例如:首先使用last,second使用前一個)。我已經使用一個循環來編寫代碼,但它沒有在Eclipse中給出所需的結果。交換數組中的相應元素

int[] a = {1, 2, 3, 4, 5}; 
int k = 0; 
int temp = 0; 
while(k < a.length) 
{ 
    temp = a[k]; 
    a[k] = a[a.length - 1 - k]; 
    a[a.length - 1 - k] = temp; 
    k++; 
} 

假設您不知道數組中的值或多長時間。

回答

6

您應該只在數組的一半處循環,即while (k < a.length/2) - 如果您繼續超出該範圍,您將最終將交換的元素交換回原始位置。

0

您正在迭代整個數組,這意味着最終會取消在迭代的前半部分中執行的操作。只需迭代數組的一半長度(舍入)。這應該工作:

int[] a = {1, 2, 3, 4, 5}; 
int k = 0; 
int temp = 0; 
while(k < (a.length/2)) { 
temp = a[k]; 
a[k] = a[a.length - 1 - k]; 
a[a.length - 1 - k] = temp; 
k++; 
} 
1
easier way 
for(int i=0,j=a.length-1;i<j;i++,j--) 
{ 
    int temp=a[i]; 
    a[i]=a[j]; 
    a[j]=temp; 
}