【问题标题】:Why does the count variable have to be defined outside the curly brackets of the for loop?为什么 count 变量必须在 for 循环的大括号外定义?
【发布时间】:2020-01-04 18:23:40
【问题描述】:

在下面的两种方法中,当我在 for 循环大括号外使用 count 变量时,我得到了不同的结果。有人可以告诉我为什么吗?

第一个循环只打印三个i 值。 所以我的问题是为什么不能像我在第二种方法中所做的那样,在 for 循环的大括号中定义 count 变量。

public static void main(String[] args) {
    int count = 0;
    for (int i=0; i<5; i++) {

        System.out.println(i);
        count++;
        if (count == 3) {
            break;
        }
    }
}
public static void main(String[] args) {

    for (int i=0; i<5; i++) {
        int count = 0;
        System.out.println(i);
        count++;
        if (count == 3) {
            break;
        }
    }
}

【问题讨论】:

  • 为什么你认为你不会得到不同的结果?
  • 可以的。但它会产生不同的结果,因为 for 循环的大括号内的所有内容都会在 for 循环的每次迭代中执行。
  • 可以在里面定义,但是这个有不同的意思。在每次循环迭代时将其重置为 0。
  • 其实你可以,只是结果会不一样。
  • int count = 0; count++; 实际上只是写int count = 1; 的冗长方式。然后它显然永远不等于 3。

标签: java loops


【解决方案1】:

因为count 在循环的每次迭代中都会重置为0(在循环之后count 也将不再可见)! 但是,你首先不需要count(因为你有icount实际上是i + 1 - 并且在循环之后是三个) -

for (int i=0; i<5; i++) {
    System.out.println(i);
    if (i + 1 == 3) {
        break;
    }
}

for (int i=0; i<5; i++) {
    System.out.println(i);
    if (i == 2) {
        break;
    }
}

【讨论】:

  • @josejuan 我们不知道count 的值是三(在这种情况下)。显然范围在实际代码中很重要,但我的主要观点是 counti 的简单代理。
  • 当然,我明白你的意思,但显然他不理解变量范围。您在没有解释他们真正的(问题中的)问题的情况下解决了问题。恕我直言。
【解决方案2】:

这是因为在第二个循环中,它会将int count设置为0,然后count++count增加1,因此它将等于1,并且每次循环增加i 1 同样的事情会再次发生(将 int count 设置为 0,然后将其递增 1,然后...)所以 i 将保持递增,直到达到值 4 并退出 for loop , 但是在你的第一个 for loop 中,因为 int count 没有在其中声明,int count 不会再次更改为 0,因此它将增加 1 而不会重新设置为 0,所以当 count 将等于 3,您将退出 for loop,因为您“告诉”您的 for loopcount==3 时中断

【讨论】:

  • @josejuan 这并没有直接回答他的问题
  • 他改变了计数的范围,我认为这是中心点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-21
  • 2016-08-31
相关资源
最近更新 更多