2011-07-15 19 views
54

Tengo una matriz de cadenas con algunos componentes, esta matriz tiene 5 componentes y varía algunas veces. Lo que me gustaría hacer es iterar a través de ese conjunto y obtener el primer componente y el componente al lado de ese. Así que la primera vez que obtendría el componente número uno y el componente número 2, la segunda vez obtendría el número 2 y 3, la tercera vez el número 3 y 4 ... Y así sucesivamente hasta llegar al último componente.Iterar a través de una matriz de cadenas en Java

Esto lo lejos que han llegado:

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. 
} 

¿Cómo puedo lograr esto?

Respuesta

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

Esto se asegura de que no consigue una ArrayIndexOutOfBoundsException para el último elemento (no hay 'siguiente' allí). La otra opción es iterar al i < elements.length - 1. Depende de tus requisitos.

29
String[] elements = { "a", "a", "a", "a" }; 

for(int i = 0; i < elements.length - 1; i++) 
{ 
    String element = elements[i]; 
    String nextElement = elements[i+1]; 
} 

Tenga en cuenta que en este caso, elements.length es 4, por lo que desea repetir desde [0,2] para obtener elementos 0,1, 1,2 y 2,3.

3
String[] elements = { "a", "a","a","a" }; 

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

usted tiene que mantener la serie cuántas veces se está accediendo a la array.Use como esto

int lookUpTime=0; 

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

lookUpTime++; 
1

yo diría que en lugar de ensayos i menos de elements.length - 1 prueba i + 1 menos de elements.length. No está cambiando el dominio de la matriz que está mirando (es decir, ignorando el último elemento), sino que está cambiando el elemento más importante que está viendo en cada iteración.

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 
} 
125

Solo para añadir a las respuestas por encima o por debajo que se puede hacer de una Enhanced For-Loop (para Java 5 o superior) para la iteración en los elementos de la matriz:

String[] elements = { "a","a","a","a" }; 
for (String s: elements) {   
     //Do your stuff here 
     System.out.println(s); 
    } 
+1

¿Cómo se obtiene el número de iteración en esto? ¿O debo hacerlo manualmente declarando una iteración que se puede cargar y contar? – User3

+1

Creo que necesitaría agregar una variable adicional para almacenar esta información – Michal

+1

También tenga en cuenta que este ciclo avanzado se aplica a Java 1.5 y superior. Sé que el 1.4 y el anterior son antiguos, pero la mayoría de las personas lo prueba y obtiene errores, y en algunos casos no verificaron qué versión de Java están usando. – Arty

0

Estos algoritmos son tanto incorrectos debido a la Comparación:

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

o

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

Es cierto que los elementos de la matriz van desde 0 a length - 1, pero la comparación en ese caso debe ser less than or equal to. Esos deberían ser:

para (int i = 0; i < elementos.longitud; i ++) {

o

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

o

para (int i = 0; i + 1 < = elementos.length; i ++) {

La matriz ["a", "b"] sería iterar como:

i = 0 es < 2: Elementos [0] rinde "a"

i = 1 es < 2: Elementos [1] rendimientos "b "

entonces salir del bucle, porque 2 no es < 2.

los ejemplos incorrectos tanto salir del bucle prematuramente y solo ejecuta con el primer elemento en este caso simple de dos elementos.

Cuestiones relacionadas