我正在尝试编写一个方法来反转两个特定索引之间的数组中的输入。但是,它会继续返回原始数组,就像测试时没有任何变化一样。有什么想法吗?
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--;
}
}
答案 0 :(得分:4)
while
循环在条件为true
时循环,但假设i < j
,up > 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;
}