我正在学习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秒)
答案 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);
}