Вложенный улучшенный цикл для одномерных массивов - PullRequest
0 голосов
/ 28 октября 2019

Я пытаюсь сравнить элементы друг с другом в массиве. Было бы лучше сделать это с расширенным циклом for, но я не уверен, как это сделать

for (int i : a4){
    for (int j=0; j<a4.length; j++){ //how to convert this line to enhanced for loop?
        if(a4[i]+1==a4[j]){
            count++;
        } 
    }
}

Это очень интересно: когда я использую обычный цикл для первой строки

for(int i=0; i<a4.length; i++)...

программа выдает неверные результаты. что за загадка? или

for(int i=0; i<a4.length; i++) не равно for (int i : a4)?!

1 Ответ

0 голосов
/ 28 октября 2019

Нет ничего плохого в использовании расширенных циклов для обоих циклов:

for (int i : a4) {
    for (int j : a4) {
        if (i == j) count++;
    }
}

Однако , если вы действительно хотите сравнить только отдельные элементы массива с другими элементами, тогда выдействительно нужны индексы, которые идут с обычными for циклами:

for (int i=0; i < a4.length-1; ++i) {
    for (int j=i+1; j < a4.length; ++j) {
        if (a4[i] == a4[j]) count++;
    }
}

Причина этого в том, что вы не хотите сравнивать, например, первый элемент с первым элементом, потому что он всегда будетправда.

...