2015-10-15 169 views
0

因此,我試圖在if/else語句內聲明一個整型變量,並在其外部打印出來。事情是這樣的:Java - 打印在if語句中聲明的變量

int x; 
int a = 1; 
if (a == 1) 
{ 
int x = 5; 
} 
System.out.println(x); 

這只是我想要做的,因爲我不跟我有實際的代碼的例子,我不想遍佈重做。雖然它確實無關緊要,因爲示例正是我需要的內容,只有使用不同的變量值和名稱(但它仍然是一個整數)。起初我只是聲明並初始化了if/else語句中的變量,但後來我被告知需要在聲明之外聲明它......所以我這樣做了,然後在聲明中初始化它,然後繼續調用它在後面。不過,我仍然收到一個錯誤,要麼說變量沒有被初始化,要麼給它賦值(x)然後在語句中更新它,我得到的錯誤是它已經被聲明。任何幫助將不勝感激,謝謝。

+0

'起初我只是聲明並初始化if/else語句中的變量,但後來我被告知我需要在聲明之外聲明它,因爲變量' x'在'if'裏面結束 – sam

回答

0
int x = -1; 
int a = 1; 
    if (a == 1) 
    { // here begins inner 'area' for declared variables 
    x = 5; 
    }// and here ends 
    System.out.println(x); 

好吧,我的壞!我希望他想知道爲什麼,並嘗試用其他方式來寫它,並讓他因IDE錯誤而受到「打擊」。 因此,只要你聲明變量'inside',如果聲明只在整個聲明中可見,那麼Mr. Unknown!所以基本上,如果你想在if語句中使用變量來做些事情,並且在結果之外得到結果,你需要在語句之外聲明它,使它具有更廣泛的可訪問性!如果您有任何問題請不要猶豫,問);

P.S.注意重新聲明變量,如同你試圖在這裏做的那樣,這是討厭的bug找到=)

+0

你應該考慮一個關於**爲什麼**這個修正事情的小解釋性文本... – dcsohl

+0

謝謝:D看到了,我知道我應該在聲明之外聲明它,但是我沒有知道我不應該在'x'之前有'int'前綴.....我是新來的java:D – Unknown

1

是的。局部變量在使用之前需要進行初始化。在實例變量初始化爲默認值的情況下,如果您在使用前未初始化它們。

如果你對這個原因感到好奇? click here to know

即將回到你的問題再次,

因爲考慮下面的情形

跟隨評論。

int x; // declared with no value 
int a = 0; 
if (a == 1) // this is false 
{ 
x = 5; // this never executed 
} 
System.out.println(x); // what you are expecting to print here ? 

因此您需要使用值進行初始化。對於例如:零初始化,後來基於更改一個條件

int x=0; 
int a = 1; 
if (a == 1) 
{ 
x = 5; 
} 
System.out.println(x); 
0

的一點是,你在上面聲明x。所以刪除int之前xif-statement。然後它工作。

int x; 
int a = 1; 
if (a == 1) { 
    x = 5; 
} 
System.out.println(x); 

隱含一個整數與0發起如果你想確保只寫

int x = 0; 

your code here 
0

X = 0之前,你的if語句簡單地分配INT,然後而不是重新聲明x作爲一個整數等於5,在你的if語句中設置x等於5。

0

謝謝大家的回答,我意識到我犯了2個小錯誤,它們不允許它工作,我(在大多數嘗試中)沒有在if語句之前爲x聲明一個值,並且我有'int'在if語句內部的x前面,這導致了重新減速錯誤。所以是的,謝謝你的快速回答:)