循环

时间:2018-05-10 09:31:47

标签: java variables for-loop

我正在学习Java并编写了一个带有for循环的程序。但是我打印出来之后我的变量为0。为什么会重置?这是我的代码:

Private static int number;

public static void main(String[] args)
{
    int number = 0;
    for (int i = 0; i < 10; i = i + 1)
    {
        number = number + 1;
    }
    System.out.println("Main: " + number);
    print();
}

public static void print()
{
    System.out.println("Print: " + number);
}

结果如下:

  

运行:

     

主要:10

     

打印:0

     

建立成功(总时间:0秒)

5 个答案:

答案 0 :(得分:1)

您的变量未重置。如果您是新手,可能很难掌握,但是int number;您创建了number类型的新变量int。还要记住,变量将保留在创建它们的范围内,并且不能在该范围之外使用。这意味着如果在while循环中初始化变量,它只能在while循环中使用。这同样适用于方法。

您在第一行创建了变量number,此变量可供类中的每个方法使用,默认情况下设置为零。但是,您在main方法中创建了另一个变量编号。第二个变量仅存在于main方法中,因为这是创建它的范围。

让我给你一些解决方法:

Private static int number;

public static void main(String[] args)
{
    //By removing `int`, we reference the variable that has already been initialized
    //instead of creating a new one
    number = 0;
    for (int i = 0; i < 10; i = i + 1)
    {
        number = number + 1;
    }
    System.out.println("Main: " + number);
    print();
}

public static void print()
{
    System.out.println("Print: " + number);
}

如果不再需要访问变量,则可能会出现这种情况:

public static void main(String[] args)
{
    int number = 0;
    for (int i = 0; i < 10; i = i + 1)
    {
        number = number + 1;
    }
    System.out.println("Main: " + number);
    print(number);
}

//We use the created variable as a parameter
public static void print(int number)
{
    System.out.println("Print: " + number);
}

答案 1 :(得分:0)

您有两个number声明,一个作为private static类变量,另一个作为main中的局部变量。 main中的局部变量隐藏了另一个变量,因此static变量根本没有更新。

答案 2 :(得分:0)

您有两个具有相同名称的变量。一个是在主循环中更新的局部变量:

public static void main(String[] args)
{
    int number = 0;
    //...
}

另一个是静态变量,初始化为零:

Private static int number;

(顺便说一下,Private应该是小写的)

您的print方法正在使用静态变量(永不改变)。您可以通过将参数传递给print函数来解决此问题:

public static void print(int number)
{
    System.out.println("Print: " + number);
}

并从你的主要方法中调用它:

print(number);

您还应该删除静态变量。这是不必要的。

答案 3 :(得分:0)

你在main()方法中重新声明了int数。这就像创建新变量。

只需删除&#39; int&#39;它应该工作。

Private static int number;

public static void main(String[] args)
{
    number = 0;
    for (int i = 0; i < 10; i = i + 1)
    {
        number = number + 1;
    }
    System.out.println("Main: " + number);
    print();
}

public static void print()
{
    System.out.println("Print: " + number);
}

答案 4 :(得分:0)

您有两个名为number的不同变量。

一个是Private static int number,另一个位于main函数int number = 0内。

我相信您希望在循环中更改静态成员,因此您必须从main函数中删除声明。

Private static int number;

public static void main(String[] args)
{
    number = 0;
    for (int i = 0; i < 10; i = i + 1)
    {
        number = number + 1;
    }
    System.out.println("Main: " + number);
    print();
}

public static void print()
{
    System.out.println("Print: " + number);
}