java - 循环后变量被重置
问题描述
我正在学习 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 秒)
解决方案
您的变量未重置。当您是新手时,这可能很难掌握,但要说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);
}
推荐阅读
- sql-server - Azure PowerShell Invoke-Sqlcmd:将数据类型 nvarchar 转换为 uniqueidentifier 时出错
- java - 保存在本地文件夹后如何使用 Spring Boot 恢复图像
- python - 如何在烧瓶 Web 应用程序中显示分类报告
- java - 在 Java 中是否可以同时返回枚举名称和值?
- reactjs - 如何在 reactjs 中使用 opencv?
- reactjs - React 中的动态页面路由
- html - 如何在 Umbraco 的 foreach 中为第一个孩子添加一个类
- python - 在 .EXE 中的 webdriver 公用键部分使用 selenium 库
- c# - 良好做法 - 如何允许将动态参数传递给实现而不强制它们在接口上?
- r - 无法从光线着色器包中找到函数“plot_gg”