java - 在 do{} 中初始化的变量不递增

标签 java scope initialization

只是为了练习,我试图在两种不同的情况下运行以下代码,最初我认为它们都可以工作,但是当我运行程序时,一个有效,一个无效,这是有效的代码

public class Test1
{
   public static void main(String args[])
   {

    int counter = 0; 
    int number = 1;
    do{ 
        System.out.println(number);
        number++; 
        counter++; 
    }while(counter<20);
}  }

O/P : 1 2 3 ... {最多打印 19}

这是没用的

 public class Test2
{
   public static void main(String args[])
   {
    int counter = 0; 
    do{ 
        int data = 0; 
        System.out.println(data);
        data++; 
        counter++; 
    }while(counter<20);
}  }

O/P : 0 0 0 0 ...{最多打印 19 次}

最佳答案

因为在每次迭代中,您的数据字段将首先设置为 0,然后打印它,然后++

public class Test2
    {
       public static void main(String args[])
       {
        int counter = 0; 
        do{ 
           int data = 0; // declare a new data field and initialize to 0
           System.out.println(data); // display zero
           data++; // data now is 1
           counter++; 
        }while(counter<20);
      } 
   }

关于java - 在 do{} 中初始化的变量不递增,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39654093/

相关文章:

java - 两个类,第一个类的初始化依赖于第二个类,反之亦然

java - 类型不匹配 : cannot convert from element type User to Object[]

javascript - AngularJS 中的 $scope 错误

ios - 扩展 UIAlertController 便利初始化警告

无法理解结构初始化

java - 在 Java 中将 DataModel 转换为 List

java - 尝试使用 vaadin 创建测试项目时出错

javascript - 如何在不返回内部函数的情况下访问函数内部函数

haskell - 不在范围 : `catch' 内

c++ - vs2010中的 vector 初始化