@HardboiledEgo

Почему при обнулении счётчика в условии внутри цикла счётчик сразу увеличивается на +1, пропуская итерацию?

int arr[] = {2, 5, 65, 23, 47, -12, -35, -72, -14, 0};
		int min = arr[0];
		int max = arr[1];
		
		for (int i = 0; i < arr.length - 1; i++) {
			System.out.println("i равно: " + i);
			if (arr[i] > arr[i+1]) {
				System.out.println("Пара для смены: " + arr[i] + " " + arr[i+1]);
				System.out.println("***************");
				min = arr[i+1];
				max = arr[i];
				arr[i+1] = max;
				arr[i] = min;
				i = -1;//почему счётчик при следующей 
					   //итерации сразу же увеличивается?
				continue;
			}
			else System.out.println("Пара без смены: " + arr[i] + " " + arr[i+1]);
		}
		System.out.println("***************");
		for (int j = 0; j < arr.length; j++) 
			System.out.println("Элемент [" + j + "]: " + arr[j]);
  • Вопрос задан
  • 174 просмотра
Решения вопроса 1
johnny_jla
@johnny_jla
Java Developer
Первое, всегда используй выделение блока кода в if/for даже если там один оператор, так как это позволит избежать потенциальных ошибок и будет читабельнее. И собственно ответ на вопрос, continue просто прерывает текущую итерацию, и даже если она прервана им, всегда после выполнения всего тела цикла будет выполнено i++. Поэтому для обнуления тебе придется писать не 0, а -1.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@id100k
React developer
JavaRush ?)
Continue пропускает 1 итерацию. Счетчик увеличивается.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы