почему он выводит только 5, когда я помещаю <= 10 в цикл for? - PullRequest
0 голосов
/ 21 июня 2019
import java.util.Scanner;

public class multiplesProgram {

    public static void main(String args[]) {
        Scanner input = new Scanner(System.in);
        int num = input.nextInt();
        int counter2 = 1;

        for (int i = 1; i <=10; i++){
            int product = num * counter2;
            System.out.println(num + "x" + counter2 + "=" + product);
            i++;
            counter2++;
        }
    }
}

Это мой код и вывод:

2x1=2
2x2=4
2x3=6
2x4=8
2x5=10

Я положил <= 10 в цикл for, почему он показывает 5, а не 10; </p>

Ответы [ 4 ]

12 голосов
/ 21 июня 2019

Вы увеличиваете i в двух местах - один раз в заголовке цикла for:

for (int i = 1; i <=10; i++)

и один раз в теле цикла:

System.out.println(num + "x" + counter2 + "=" + product);
i++;
counter2++;

Если вы напечатаете i на каждой итерации, вы увидите, что она имеет значения 1, 3, 5, 7, 9.

Вы почти наверняка не хотите, чтобы этот оператор i++; содержался в теле цикла.

Фактически, я бы затем изменил код для полного удаления counter2, так как вы бы хотели, чтобы он имел то же значение, что и i на каждой итерации:

for (int i = 1; i <= 10; i++) {
    int product = num * i;
    System.out.println(num + "x" + i + "=" + product);
}
4 голосов
/ 21 июня 2019

У вас есть "i ++" в вашем цикле for, который снова увеличивает цикл for.

2 голосов
/ 21 июня 2019

Здесь:

for (int i = 1; i <=10; i++){

и здесь:

i++;

Вы увеличиваете i в два раза за каждую итерацию цикла, таким образом, вы получаете только половину ожидаемого цикла, если ваш код заканчивается!

То есть вы хотите удвоить предел цикла (10 -> 20) или, что более разумно: опустить эту секунду i++ в тело цикла ...

2 голосов
/ 21 июня 2019

Вы используете i++ дважды.Один раз внутри цикла и один раз внутри условия for, которое заставит i увеличиваться в два раза каждый цикл.

Решение: Удалите i++ из цикла.

Кроме того, вам вообще не нужно использовать counter2++ в этой программе.Вместо num * counter2 просто сделайте num * i, и вы получите тот же результат, и вам не понадобится весь дополнительный пух.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...