[英]Do-While loop in Java
因此,據我了解,do while循環將始終至少運行一次? 但是如果是這種情況,為什么我們需要在循環之外聲明和初始化變量?
以下面的代碼為例:
do {
int a = (int) (Math.random() * 13);
int b = (int) (Math.random() * 13);
int c = (int) (Math.random() * 13);
int d = (int) (Math.random() * 13);
}
while (a + b + c + d != 24);
這將引發可能尚未初始化a,b,c,d的編譯錯誤。 因為我是Java初學者,所以我確定有一個簡單的原因,但是我似乎找不到它?
非常感謝您對此的任何幫助。
查找變量范圍,因為這是您的問題:您正在嘗試訪問超出其聲明范圍的變量,這里是do-while循環,但這無法完成。
請注意,如果再引入一個變量,您的代碼將起作用:
int sum = 0; // scope is *outside* of do-while loop
do {
int a = (int) (Math.random() * 13);
int b = (int) (Math.random() * 13);
int c = (int) (Math.random() * 13);
int d = (int) (Math.random() * 13);
sum = a + b + c + d;
} while (sum != 24);
但是請注意,現在如果您仍然需要訪問a,b,c和d值,則不能。 為此,再次,您應該在循環之前聲明變量。
可以這樣寫
int a = (int) (Math.random() * 13);
int b = (int) (Math.random() * 13);
int c = (int) (Math.random() * 13);
int d = (int) (Math.random() * 13);
while (a + b + c + d != 24){
a = (int) (Math.random() * 13);
b = (int) (Math.random() * 13);
c = (int) (Math.random() * 13);
d = (int) (Math.random() * 13);
//do something
}
do {
int a = (int) (Math.random() * 13);
int b = (int) (Math.random() * 13);
int c = (int) (Math.random() * 13);
int d = (int) (Math.random() * 13);
}
while (a + b + c + d != 24);
您要這樣重寫代碼:
int a = 0; //I am being explicit here
int b = 0;
int c = 0;
int d = 0;
do {
a = (int) (Math.random() * 13);
b = (int) (Math.random() * 13);
c = (int) (Math.random() * 13);
d = (int) (Math.random() * 13);
}
while (a + b + c + d != 24);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.