Петля не печатает правильно - PullRequest
0 голосов
/ 20 января 2019

Я создал цикл for.

Что мне нужно сделать, чтобы распечатать: test0 test1 test2 test3

 for (int i = 0; i < 4; i++) {

        int x = 0;
        System.out.println("test"+x);
        x++;

    }

Но оно не распечатывается: test0 test1 test2 test3

Распечатывается: test0 test0 test0 test0

Ответы [ 6 ]

0 голосов
/ 21 января 2019

Вы использовали x в качестве переменной, которая печатает.Вы должны рассмотреть область действия переменной x.Каждый раз, когда цикл запускается снова, x сбрасывает его значение до 0, как оно объявлено внутри цикла.Увеличение x в конце не поможет, поскольку значение x сбрасывается в 0 при выполнении следующей итерации цикла.Вместо этого замените x на i или объявите новую переменную вне цикла.

for(int i = 0; i < 4; i++) {

    int x = 0;
    System.out.println("test" + i);
    x++;

}

или вы можете сделать

int a = 0;
for(int i = 0; i < 4; i++) {
System.out.println("test" + a);
a++;
}
0 голосов
/ 21 января 2019

Вы используете оператор присваивания =, чтобы присвоить значение 0 x.Ваша переменная x каждый раз обновляется с 0 .Поэтому он печатает: test0 test0 ..... Поскольку он находится внутри цикла for.

Если переменная x была объявлена ​​вне цикла for, то время x не было обновлено с помощью0, он только что обновился с оператором x=x+1 означает ++.ТАК это будет увеличиваться и работал отлично.И еще одна вещь, здесь x - это глобальная переменная for-loop, которая может быть доступна внутри цикла for.Пожалуйста, смотрите ниже код.

int x = 0;
for (int i = 0; i < 4; i++) {
    System.out.println("test"+x);
    x++;
}
0 голосов
/ 20 января 2019

Очень похожий пример можно найти в документации Oracle 'for Statement' :

Оператор for обеспечивает компактный способ итерации по диапазону ценности. Программисты часто называют это «циклом for» из-за способ, которым он многократно повторяется, пока не довольный. Общая форма заявления for может быть выражена как следующим образом:

for (initialization; termination; increment) { statement(s) }

При использовании этой версии оператора for имейте в виду, что:

  • Выражение инициализации инициализирует цикл; это выполнено один раз, когда начинается цикл.
  • Когда выражение завершения оценивается как false, цикл завершается.
  • Выражение приращения вызывается после каждая итерация цикла; это вполне приемлемо для этого выражение для увеличения или уменьшения значения.

Вам необходимо объявить x вне цикла, в противном случае он будет установлен в 0 после каждой итерации. Итак, в вашем случае это будет:

int x = 0;
for (int i = 0; i < 4; i++) {
    System.out.println("test" + x);
    x++;
}

Для этого примера вам не нужно объявлять две переменные, вы можете получить тот же результат, используя переменную, объявленную для цикла:

for (int i = 0; i < 4; i++) {
    System.out.println("test" + i);
}

Поскольку в этом посте много похожих ответов, я буду ссылаться на другой способ выполнения этого конкретного цикла, взятый из документации Oracle 'for Statement' , 'расширенный для цикла по массиву':

 int[] numbers = {0,1,2,3};
 for (int item : numbers) {
   System.out.println("test" + item);
 }
0 голосов
/ 20 января 2019
for (int i = 0; i < 4; i++) {
    System.out.println("test"+i);
}

или // если вы настаиваете на использовании x!

for (int i = 0; i < 4; i++) {
    int x = i;
    System.out.println("test"+x);
}
0 голосов
/ 20 января 2019

Вам необходимо изменить «x» на «i», потому что «i» является индексной переменной и увеличивается на 1 каждую итерацию. «x» является локальной переменной и всегда будет 0, потому что вы переопределяете ее при каждой итерации. Вы можете сделать это:

for(int i = 0; i < 4; i++) {

    int x = 0;
    System.out.println("test" + i);
    x++;

}

Или это:

int x = 0;
for(int i = 0; i < 4; i++) {

    System.out.println("test" + x);
    x++;

}
0 голосов
/ 20 января 2019

Потому что вы определяете x в каждой итерации. Поместите x вне цикла. Над этим.

int x = 0
for (...) { }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...