在Java中迭代通过string数组

我有一些组件的string数组,这个数组有5个组件,它有所不同。 我想要做的是迭代通过该数组,并获得第一个组件和旁边的组件。 所以我第一次得到组件号码1和组件号码2,第二次将得到数字2和3,第三次数字3和4 …等等,直到你到达最后一个组件。

这我来了多远:

String[] elements = { "a", "a","a","a" }; for( int i = 0; i <= elements.length - 1; i++) { // get element number 0 and 1 and put it in a variable, // and the next time get element 1 and 2 and put this in another variable. } 

我怎样才能做到这一点?

只要添加上面或下面的答案,你可以做一个增强的For循环 (对于Java 5和更高)迭代arrays的元素:

 String[] elements = { "a","a","a","a" }; for (String s: elements) { //Do your stuff here System.out.println(s); } 
 String[] elements = { "a", "a", "a", "a" }; for( int i = 0; i < elements.length - 1; i++) { String element = elements[i]; String nextElement = elements[i+1]; } 

注意,在这种情况下, elements.length是4,所以你想从[0,2]迭代得到元素0,12,3

 String current = elements[i]; if (i != elements.length - 1) { String next = elements[i+1]; } 

这可以确保你没有得到最后一个元素的ArrayIndexOutOfBoundsException (这里没有'next')。 另一个选项是迭代到i < elements.length - 1 。 这取决于你的要求。

 String[] elements = { "a", "a","a","a" }; for( int i=0; i<elements.length-1; i++) { String s1 = elements[i]; String s2 = elements[i+1]; } 

我会争论,而不是testingielements.length - 1testingi + 1elements.length 。 你不改变你正在看的数组的域(即忽略最后一个元素),而是改变你在每次迭代中看到的最伟大的元素。

 String[] elements = { "a", "a","a","a" }; for(int i = 0; i + 1 < elements.length; i++) { String first = elements[i]; String second = elements[i+1]; //do something with the two strings } 

你必须维护串行多less次访问数组。使用像这样

 int lookUpTime=0; for(int i=lookUpTime;i<lookUpTime+2 && i<elements.length();i++) { // do something with elements[i] } lookUpTime++; 

由于比较,这些algorithm都是不正确的:

for(int i = 0; i <elements.length – 1; i ++)

要么

for(int i = 0; i + 1 <elements.length; i ++){

数组的元素的范围从0length - 1 ,但是在这种情况下的比较应该less than or equal to 。 这些应该是:

for(int i = 0; i <elements.length; i ++){

要么

for(int i = 0; i <= elements.length – 1; i ++){

要么

for(int i = 0; i + 1 <= elements.length; i ++){

数组["a", "b"]可以迭代为:

i = 0是<2:元素[0]产生“a”

i = 1是<2:元素[1]产生“b”

然后退出循环,因为2不是<2。

不正确的例子都过早地退出了循环,并且只在这个简单的两个元素的情况下用第一个元素执行。