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?
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);
}
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
.
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.
String[] elements = { "a", "a","a","a" };
for( int i=0; i<elements.length-1; i++)
{
String s1 = elements[i];
String s2 = elements[i+1];
}
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
}
È 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++;
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.
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);
}