英文:
why an variable defined in a do while loop Cannot be resolved to a variable
问题
这是简单的代码示例:
package first;
public class DowhileLoops {
public static void main(String[] args) {
// TODO Auto-generated method stub
do {
int i = 1;
i++;
System.out.println("我的循环正在工作");
} while (5 > i);
}
}
这是错误信息:
Exception in thread "main" java.lang.Error: 无法解析的编译问题:
i 无法解析为变量
at todowhileloops/first.DowhileLoops.main(DowhileLoops.java:15)
我知道变量必须在循环外部定义,而不是在循环内部,但我想知道为什么... 请帮忙解答并投票支持这个问题。
英文:
Here is the simple code
package first;
public class DowhileLoops {
public static void main(String[] args) {
// TODO Auto-generated method stub
do {
int i = 1;
i++;
System.out.println("my loop is working ");
}while(5 > i);
}
}
Here is the Error
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
i cannot be resolved to a variable
at todowhileloops/first.DowhileLoops.main(DowhileLoops.java:15)
I khow that the variable must be defined outside instead of inside the loop but i want to know whyyyyy... please help and vote the question.
答案1
得分: 2
在 do
语句之外定义变量 i
。根据您当前的代码,变量 i
的作用范围仅限于 do{}
内部。它是 do
语句的局部变量。它无法在 while()
内部访问。
英文:
Define i
outside do statement. From your current code the scope of i
is only inside do{}
. It is a local variable for do
. It's not accessible to while()
.
答案2
得分: 1
while
循环条件仅能访问“当前”变量作用域。
do
块创建一个“子”变量作用域。在“子”变量作用域中声明的任何变量都无法在“父”作用域中访问。
请参阅 https://www.java-made-easy.com/variable-scope.html 中的“循环作用域”以获取更详细的解释。
英文:
The while
conditional only has access to "current" variable scope.
The do
block creates a "child" variable scope. Any variables declared in a "child" variable scopes are not accessible in "parent" scopes.
See "Loop Scope" in https://www.java-made-easy.com/variable-scope.html for a more detailed explanation.
答案3
得分: 1
int i = 0;
do {
i++;
System.out.println(i);
} while (i < 5);
英文:
do {
int i = 1;
i++;
System.out.println("my loop is working ");
} while(5 > i);
Ok, so first off, you have to initialize the variable outside of the loop itself. so before you write "do {". right now you're setting i to 1 every iteration, meaning this loop will never terminate. Here you go:
int i = 0;
do {
i++
System.out.println(i);
} while (i < 5);
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论