2014-06-23 95 views
-4

我對Java編程還很陌生,所以我有一個問題。 我可以在if-else語句內聲明一個變量,就像for循環一樣嗎?在if語句中聲明一個變量?

for (int i=0; i<10; i++) 



    int test; 
    if (test=6;test ==9;) { 
     System.out.println("Yes"); 
    } 
    else { 
     System.out.println("No"); 
    } 
+0

那麼,你爲什麼不試試看?如果編譯器抱怨,那麼你在做什麼是不對的。 – awksp

+0

當然你可以 – user2277872

+0

if語句的代碼是否正確? 「test == 9」;或者它應該只是「測試== 9」? – user3744056

回答

2

不,你不能這樣做。 if語句中的圓括號內的內容必須是一個表達式,其值爲boolean。變量聲明永遠不是Java中的表達式。

假設你正試圖宣稱test以便其範圍僅限於if/else語句,那麼這是如何做到這一點:

public void someMethod() { 
    .... 
    { // nested block to limit the scope of 'test' 
     int test = 6; 
     if (test == 9) { 
      System.out.println("Yes"); 
     } 
     else { 
      System.out.println("No"); 
     } 
    } 
} 

(這個例子沒有多大意義,但我認爲這不是意味着)。

+0

哇,不知道你可以在一個方法內嵌套塊。是否有任何缺點對他們來說,還是他們只是一個沒有任何其他影響的範圍限制機制? – awksp

+0

真的很感謝你的最好和最清晰的答案! – user3744056

+0

沒有性能劣勢。我猜他們可以減少可讀性。 –

0

這是錯誤的

if (test=6;test ==9;) { 
     System.out.println("Yes"); 
    } 
    else { 
     System.out.println("No"); 
    } 

你不能有內if()

你正在做的是叫做初始化方式分號(test=6;),這是不是allowed.You可以只比較2個變量裏面如果像if(test==6)

記住,javaIf接受o nly booleantruefalse(不像在javascript中接受大於1的任何東西)

+0

所以這意味着我不能在if-else語句中聲明變量? – user3744056

+0

@ user3744056你正在做的方式被稱爲初始化'test = 6'你不能在裏面初始化如果 – SpringLearner

+0

等一下,在if語句裏肯定允許初始化。見[這裏](http://ideone.com/jqLnFP)。它實際上是錯誤的來源,因爲程序員意外地分配而不是比較。 – awksp

0

java中條件語句或決策聲明中的表達式必須計算爲布爾值(true/false)。即使下列情況也不會編譯:

if(null){} 
if(0){} 

等等。