簡體   English   中英

在while循環內而不是在for循環內聲明變量的數據類型有什么問題?

[英]What is wrong in declaring data type of variable inside while loop but not inside for loop?

如果我聲明變量然后在 while 循環中初始化變量,則沒有問題。

int a; 
while((a=someValue)!= -1)`

但是如果我聲明變量並在while循環中初始化它,編譯時就會出現問題。

while ((int a=someValue) != -1)

這是什么原因? 不過,在 For 循環中聲明和初始化變量似乎沒問題。

完整代碼片段:

正確的

int a;
while ((a=Integer.parseInt(reader.nextLine())) != -1) {
    sum.addNumber(a);
}
System.out.println("sum: "+sum.sum());

錯了

while ((int a=Integer.parseInt(reader.nextLine())) != -1) {
        sum.addNumber(a);
    }
System.out.println("sum: "+sum.sum());

因為你只能在while循環的括號內寫一個表達式。 從語義上講,這是有道理的:假設您在while()聲明了一個變量,那么在每次迭代時它都會創建一個新的局部變量,並且您不能多次聲明局部變量。

第二個已經給出了語法錯誤。 For循環不同,您不能在While循環中聲明變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM