gpt4 book ai didi

java - 变量的方法级范围

转载 作者:行者123 更新时间:2023-11-30 06:25:40 25 4
gpt4 key购买 nike

我是 Java 的初学者,在练习时遇到了这些错误,所以我想弄清楚它们,而不是为了避免错误而死记硬背。

public static int gcd(int a, int b) {
if(a > b) {
int result = a % b;
}
return result;
}

这会生成 a cannot find symbol,但我认为我在 if 循环中将结果初始化为 int

public static int gcd(int a, int b) {
if(a > b) {
int result = a % b;
return result;
}
}

为此,如果我在if循环中返回结果,是不是错误的,因为它继续循环?

public static int gcd(int a, int b) {
int result = 0;
if(a > b) {
result = a % b;
}
return result;
}

if 循环之外声明结果时错误消失。这是为什么?

最佳答案

这与变量result的范围有关。当它在 if 中时,当您离开 if(})时它不再存在。

public static int gcd(int a, int b){
int result = 0;
if (a > b) {
result = a % b;
}
return result;
} // result exists until here

public static int gcd(int a, int b){
if (a > b) {
int result = a % b;
} // result exists until here
return result; // result doesn't exist in this scope
}

基本上您只能访问定义它们的代码块内的变量,代码块由花括号 { ... } 定义。

您的函数的另一种实现完全可以在没有变量的情况下完成。

public static int gcd(int a, int b){
if (a > b) {
return a % b;
}
return 0;
}

关于java - 变量的方法级范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15319597/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com