有一个数组[a,b,c,d,e,f],我想以a,f,b,e,c,d的形式遍历和打印。这是从开始到结束的另一个元素。这是我尝试过的。
int start=0;
int end=arr.length-1;
while(start!=end)
{
System.out.print(arr[start]+" "+arr[end]);
start++;
end--;
}
但这是错误,那就是java.lang.ArrayIndexOutOfBoundsException
答案 0 :(得分:2)
请将条件更改为start < end
。如果没有,在你的例子中,start = 2,end = 3,下一个循环将是start = 3和end = 2.最终,start
将继续增加并超过数组长度。
您还需要在循环外部打印中间元素,以防数组长度也为奇数。
答案 1 :(得分:1)
当您使用.hide()/.show()
时,对于数组中偶数个值,索引永远不会相同,而是尝试这个
start!=end
答案 2 :(得分:0)
将while条件更改为start <= end
答案 3 :(得分:0)
没有像start == end
这样的条件您的变量将如下所示
*开始= 0,1,2,3
*结束= 5,4,3,2
你需要考虑如何打破你的while循环
答案 4 :(得分:0)
您可能想尝试使用for循环,如下例所示:
public void printTraverseArray(String[] array) {
int rounds = array.length/2;
for(int i = 0; i < rounds; i++) {
System.out.print(array[i] + " " + array[array.length - 1 - i] + " ");
}
if(array.length % 2 != 0) { //odd number of items in array
System.out.print(array[rounds]);
}
}
如您所见,我们还会考虑阵列中有奇数项目的情况。 rounds变量将包含我们需要打印某些内容的次数(对于奇数,rounds-1,因为5/2 = 2.5 = 2整数)。这适用于偶数,因为我们同时从头开始和结束。 对于奇数,我们来一轮,但这是一个特殊的回合,因为我们只需要打印一个项目。计算此项目的位置时,它与rounds变量完全相同。 这是一个比其他答案更复杂的算法,但我认为值得您花时间去研究它。 当有人有疑问时,我很乐意回答。