如何以这种格式遍历数组?

时间:2018-03-30 11:38:18

标签: java arrays sorting data-structures

有一个数组[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

5 个答案:

答案 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变量完全相同。 这是一个比其他答案更复杂的算法,但我认为值得您花时间去研究它。 当有人有疑问时,我很乐意回答。