Если я определяю две переменные цикла в цикле for, как мне обновить переменные цикла

#java

Вопрос:

Следующим образом, я хочу изменить массив. Но мой код не работает. Это мой цикл for. Пожалуйста, взгляните. Правильно ли это для цикла?Коды приведены ниже.

 int[] array = new int[]{2,3,5,7,11,13,17,19};
System.out.println("Before reversal:");

for (int i = 0; i < array.length; i  ) {
    System.out.print(array[i]   " ");
}

for (int i = 0,j = array.length - i - 1; i < j; i  ) {  
    int temp = array[i];
    array[i] = array[j];
    array[j] = temp;
}

System.out.println();
System.out.println("After reversal:");
for (int i = 0; i < array.length; i  ) {
    System.out.print(array[i]   " ");
}
 

Комментарии:

1. Пожалуйста, добавьте тег для вашего целевого языка.

2. Для чего вам это нужно? Если это просто для print цели, вы можете просто изменить свой индекс array.length - 1 обратно на 0 и изменить приращение на i-- .

Ответ №1:

Вот что я бы сделал:

 for (int i = 0; i < array.length/2; i  ) {
    int temp = array[i];
    array[i] = array[array.length-i-1];
    array[array.length-i-1] = temp;
}
 

Условным условием в цикле for является целочисленное деление, что означает, что это будет работать с массивами как четной, так и нечетной длины.

Ответ №2:

         for (int i = 0,j = array.length - i - 1; i < j; i  ) {  
            int temp = array[i];
            array[i] = array[j];
            array[j] = temp;
        }
 

Значение j никогда не обновляется, и начальное значение j должно быть array.length-1, потому что i равно всего 0.
У вас есть 3 варианта, первый из которых-изменение оператора for:

    for(int i=0, j=array.length-1; i<j; i  , j--) //YOUR CODE
 

Вторым было бы изменение последнего задания на array[j--] = temp;

И третьим было бы добавление a j--; после последнего назначения.

Любой из них должен решить вашу проблему.

Комментарии:

1. Поэтому, если я определяю две переменные цикла в цикле for, я должен объявить обновление двух переменных цикла в круглых скобках, правильно. Я просто не понимаю, почему j никогда не включал в свой код.

2. Спасибо, братан. Я знаю, почему значение j никогда не обновляется. Это связано с тем, что инициализация значения переменной цикла в цикле for выполняется только один раз. И после этого значение i можно обновить, но j не может обновить. Большое спасибо.