在两个索引之间反转数组的一部分

时间:2014-02-20 18:40:37

标签: java arrays

我正在尝试编写一个方法来反转两个特定索引之间的数组中的输入。但是,它会继续返回原始数组,就像测试时没有任何变化一样。有什么想法吗?

public static void reverse (char[] ar, int i, int j) {
    char[] arTwo= new char[ar.length]; 
    for (int x =0; x < ar.length; x++){     
        arTwo[x]= ar[x];
    }
    int up =i;
    int down = j;
    while (up> j ) {
        ar[up] = arTwo[down];
        up++;
        down--;
    }

}

2 个答案:

答案 0 :(得分:4)

while循环在条件为true时循环,但假设i < jup > j从一开始就是false,因此不会发生迭代。

尝试

while (up < down) {

所以up在中间遇到down

答案 1 :(得分:0)

为什么不交换原始数组中的项目?

for (int x=0; x<(j-i)/2; x++)
{
    int index1 = i+x;
    int index2 = j-x;
    char temp = ar[index1];
    ar[index1] = ar[index2];
    ar[index2] = temp;
}