英文:
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);
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。


评论