Itera attraverso array di stringhe in Java


Ho un array di stringhe con alcuni componenti, questo array ha 5 componenti e varia alcune volte. Quello che vorrei fare è scorrere quell'array e ottenere il primo componente e il componente accanto a quello. Quindi la prima volta otterrei il componente numero uno e il componente numero 2, la seconda volta otterrei il numero 2 e 3, la terza volta il numero 3 e 4... E così via fino ad arrivare all'ultimo componente.

Questo quanto sono arrivato:

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

Come può Io compio questo?

Author: sashikanta, 2011-07-15

8 answers

Solo per aggiungere alle risposte sopra o sotto che potresti fare un Enhanced For-Loop (per java 5 e versioni successive) per l'iterazione sugli elementi dell'array:

String[] elements = { "a","a","a","a" };   
for (String s: elements) {           
        //Do your stuff here
        System.out.println(s); 
    }
 134
Author: Michal, 2016-01-07 11:13:54
String[] elements = { "a", "a", "a", "a" };

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

Si noti che in questo caso, elements.length è 4, quindi si desidera iterare da [0,2] per ottenere elementi 0,1, 1,2 e 2,3.

 30
Author: Stefan Kendall, 2012-03-28 17:19:17
String current = elements[i];
if (i != elements.length - 1) {
   String next = elements[i+1];
}

Questo fa in modo che non si ottiene un ArrayIndexOutOfBoundsException per l'ultimo elemento (non c'è 'next' lì). L'altra opzione è quella di iterare su i < elements.length - 1. Dipende dalle vostre esigenze.

 3
Author: Bozho, 2011-07-15 13:29:31
String[] elements = { "a", "a","a","a" };

for( int i=0; i<elements.length-1; i++)
{
    String s1 = elements[i];
    String s2 = elements[i+1];
}
 3
Author: ascanio, 2017-02-09 19:58:15

Direi invece di testare i meno di elements.length - 1 testare i + 1 meno di elements.length. Non stai cambiando il dominio dell'array che stai guardando (cioè ignorando l'ultimo elemento), ma piuttosto cambiando l'elemento più grande che stai guardando in ogni iterazione.

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
}
 1
Author: ILMTitan, 2011-07-15 15:26:25

È necessario mantenere la serie quante volte si accede alla matrice.Usa in questo modo

int lookUpTime=0;

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

lookUpTime++;
 1
Author: Rasel, 2011-07-16 18:00:12

Questi algoritmi sono entrambi errati a causa del confronto:

Per (int i = 0; i

O

Per (int i = 0; i + 1

È vero che gli elementi dell'array vanno da 0 a length - 1, ma il confronto in questo caso dovrebbe essere less than or equal to. Quelli dovrebbero essere:

Per (int i = 0; i

O

Per (int i = 0; i

O

Per (int i = 0; i + 1

La matrice ["a", "b"] itererebbe come:

I = 0 è

I = 1 è

Quindi uscire dal ciclo perché 2 non è

Gli esempi errati escono entrambi dal ciclo prematuramente e vengono eseguiti solo con il primo elemento in questo semplice caso di due elementi.

 0
Author: TrustButVerify, 2017-02-09 19:53:07
    String[] nameArray= {"John", "Paul", "Ringo", "George"};
    int numberOfItems = nameArray.length;
    for (int i=0; i<numberOfItems; i++)
    {
        String name = nameArray[i];
        System.out.println("Hello " + name);
    }
 0
Author: Ravichandra S V, 2018-03-16 07:43:21