2014-10-03 75 views
0

如何交换给定整数数组和两个整数值的两个数组值?交换数组元素值

我使用的代码

public class Q1K { 
    void swapElements(int[] array, int index1, int index2){ 
     int index3= array[index1]; 
     array[index1]=array[index2]; 
     array[index2]= array[index3]; 
    } 
} 

很抱歉,如果我的问题是缺少信息/费解

+0

您提供输入和预期输出将有助于获得清晰的想法 – 2014-10-03 10:15:47

+0

你的问题不清楚。你能提一下你的期望吗? – 2014-10-03 10:16:41

回答

2

它应该是,

int temp = array[index1]; // its not a index, its a value at a particular index. 
array[index1]=array[index2]; 
array[index2]= temp; 

您使用的命名规则是安静混乱index3,它实际上应该是一个临时变量,用于swapping

1

您的回答非常接近。看看这个解决方案...

public class Q1K { 
    void swapElements(int[] array, int index1, int index2){ 
     int val = array[index1]; 
     array[index1] = array[index2]; 
     array[index2] = val; 
    } 
} 
2

array[index3];将再次返回数组中的值。所以你需要把它写成index3

明智地命名变量以避免混淆, 还记得[]大括号内的值表示始终的位置。

Learn More关于交换数组。

3

您已经知道您需要一个临时变量来执行Java中的基本交换。但变量的命名(你的案例中的index3)表明你混淆了事物;我们的目标不是临时存储您的数组的索引,而是由该索引代表的 - 否则,它将被覆盖(并因此丢失)。在交换的“第3步”中你想要做的是恢复临时值本身,而不是索引后面的值。

所以:

void swapElements(int[] array, int index1, int index2){ 
     int tempValue = array[index1]; 
     array[index1] = array[index2]; 
     array[index2] = tempValue; 
} 
1
public class Q1K { 
    void swapElements(int[] array, int index1, int index2){ 
     int index3= array[index1]; 
     array[index1]=array[index2]; 
     array[index2]= index3; 
    } 
} 

确保你的名字你的变量,使得他们阅读代码的时候才有意义。从你的代码,INDEX3听起来像排列的指标,但在代码方面真的不是:)

0

还有另一种方式,不需要使用临时变量:

void swapElements(int[] array, int ix1, int ix2){ 
    array[ix1] = array[ix1] + array[ix2]; 
    array[ix2] = array[ix1] - array[ix2]; 
    array[ix1] = array[ix1] - array[ix2]; 
}