2013-09-21 18 views
0

我有一個變量,該變量被初始化,然後在條件中動態重新分配;作爲這樣的:重新分配條件內的Java變量

int a; 

if(b > 5) { 
    int a = 10; 
} else { 
    int a = 1; 
} 

它給我這個錯誤:

/path/to/file:4 a is already defined in int a = null; 

爲什麼我不能重新分配這個變量?

回答

2

當你寫

int a; 

這是變量的聲明。如果您嘗試在同一範圍內再次以相同方式編寫它,並且該變量已存在,編譯器將引發錯誤。

你不必重新定義變量a,只是重新分配這樣的:

int a = 0; // note that you need to initialize the local variables before using 

if(b > 5) { 
    a = 10; 
} else { 
    a = 1; 
} 
+0

在這個特定的情況下,你不需要完整定義'int a = 0;'。只要'int a;'沒問題。就我個人而言,我寧願儘可能只做聲明。 –

2

你實際上重新聲明變量a,不重新分配它的價值。

嘗試

a = 10; 

代替

int a = 10; 
2

好時間使用在線條件運算符(下稱 「三元運算符」):

int a = (b > 5) ? 10 : 1; 
+0

+1表示三元運算符 – Libbux