Подтвердить что ты не робот

Итерация через строковый массив в Java

У меня есть массив String с некоторыми компонентами, этот массив имеет 5 компонентов, и он меняется несколько раз. То, что я хотел бы сделать, это перебрать этот массив и получить первый компонент и компонент рядом с ним. Поэтому в первый раз, когда я получу компонент номер один и компонент номер 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. 
}

Как я могу это сделать?

4b9b3361

Ответ 1

Вы можете сделать расширенный цикл for (для Java 5 и выше) для итерации элементов массива:

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

Ответ 2

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, 1,2 и 2,3.

Ответ 3

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

Это гарантирует, что вы не получите ArrayIndexOutOfBoundsException для последнего элемента (там нет "рядом" ). Другой вариант - итерация до i < elements.length - 1. Это зависит от ваших требований.

Ответ 4

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

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

Ответ 5

Я бы сказал, вместо тестирования i меньше elements.length - 1 тестирования i + 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
}

Ответ 6

Вы должны поддерживать последовательность, сколько раз вы обращаетесь к массиву. Используйте это

int lookUpTime=0;

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

lookUpTime++;

Ответ 7

Эти алгоритмы неверны из-за сравнения:

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

или

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

Верно, что элементы массива варьируются от 0 до length - 1, но сравнение в этом случае должно быть less than or equal to. Это должно быть:

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

или

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

или

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

Массив ["a", "b"] будет итерации как:

i = 0 представляет собой < 2: элементы [0] дают "a"

i = 1 представляет собой < 2: элементы [1] дают "b"

то выйдите из цикла, потому что 2 не является < 2.

Неправильные примеры выходят из цикла преждевременно и выполняются только с первым элементом в этом простом случае из двух элементов.

Ответ 8

    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);
    }

Ответ 9

Если вы ищете производительность и порядок итераций не имеет значения, вы можете выполнять итерацию, используя оптимизированный обратный цикл:

for(int i=elements.lenth; --i>=0;) {...}

Таким образом, вы извлекаете длину массива один раз, затем уменьшаете индекс и сравниваете с нулем в одной атомарной операции. Последнее, но не последнее сравнение с нулем - очень быстрая операция, часто используемая многими процессорами (быстрее, чем сравнение с длиной массива).