首页 > 解决方案 > 循环后变量被重置

问题描述

我正在学习 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 秒)

标签: javavariablesfor-loop

解决方案


您的变量未重置。当您是新手时,这可能很难掌握,但要说int number;您创建了一个新number的 type变量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);
}

推荐阅读