为什么当我在for循环中放入<= 10时,它仅输出5?

时间:2019-06-21 14:17:31

标签: java

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

我在for循环中放入<= 10,为什么它显示5而不是10;

4 个答案:

答案 0 :(得分:12)

您要在两个位置递增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);
}

答案 1 :(得分:4)

您的for循环中有“ i ++”,正在再次增加for循环。

答案 2 :(得分:2)

您两次使用i++。一次进入循环,一次进入for条件,这将使i每次循环递增两次。

解决方案:从循环内部删除i++

此外,在此程序中根本没有理由使用counter2++。不用num * counter2,而要做num * i,您将获得相同的结果,并且不需要所有多余的绒毛。

答案 3 :(得分:2)

这里:

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

在这里:

i++;

您将在每个循环迭代中将我增加两次,因此,如果您的代码用尽,则只会得到预期循环用完的一半

因此,您要么希望将循环限制加倍(10-> 20),要么更合理:将第二i++放到循环主体中...