在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,1
和2,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]; }
我会争论,而不是testingi
比elements.length - 1
testingi + 1
比elements.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 ++){
数组的元素的范围从0
到length - 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。
不正确的例子都过早地退出了循环,并且只在这个简单的两个元素的情况下用第一个元素执行。