2014-01-23 295 views
-1
String firstname , middlename , lastname ; 

firstname = fn.getText().substring(0,1); 
middlename = mn.getText().substring(0,1); 
lastname = ln.getText(); 

String shortname = shortname.concat(lastname); // error is in this line, shortname.concat 

shortname = shortname.concat(" "); 
shortname = shortname.concat(firstname); 
shortname = shortname.concat("."); 
shortname = shortname.concat("middlename"); 
shortname = shortname.concat("."); 

shrt.setText(shortname); 

沒有其他行有任何錯誤。只是shortname變量未初始化。變量未被初始化

注:易於解決方案請。我在第11課。做這個JAVA沒有文字書。

+0

請編輯您的文章,並附上錯誤[stack trace](http://en.wikipedia.org/wiki/Stack_trace) – Christian

+0

@Christian,這是一個編譯錯誤;) –

回答

0

你正試圖使用​​shortname甚至在聲明它之前。你需要聲明它並在使用它之前初始化一個變量。在RHS上使用shortname意味着你甚至在LHS上聲明之前就試圖使用它。首先聲明並初始化它,然後使用它。

String shortname = ""; // blank string, for initializing it 
shortname = shortname.concat(lastname); 

由於@Brian曾評論說,如果它的將是一個空白字符串CONCAT,你還不如干脆直接賦值給它。這樣你就不需要2條語句。

String shortname = lastname; // Declaration and initialization, done! 
+1

謝謝大家,它做的工作。 –

0

用途:

String shortname = ""; 
    shortname = shortname.concat(lastname); 
+0

爲什麼concat在我們知道的時候它是空的?字符串shortName = lastname –

+0

完全不需要連接空字符串 – Aarav

5

右手表達

String shortname = shortname.concat(lastname); 

將之前評估分配,所以當你嘗試做

shortname.concat(lastname) 

shortname那時沒有初始化。爲了解決這個問題,你必須使用空字符串("")使用前初始化

String shortname = ""; 
shortname = shortname.concat(...); 

編輯:

由於@BrianRoach評論說,沒有必要來連接它,因爲你只是將一個空字符串("")與另一個String連接起來。只是做:

String shortname = lastname; 
+2

爲什麼concat在我們知道它是空的時候?'String shortName = lastName' –

+0

你是對的,我忽略了它。編輯。 – Christian

+0

@BrianRoach:好點 –

0

用來初始化SHORTNAME第一

Actulally shortname doesnt contain anything to concat with. 

所以提供一些價值吧,

String shortname=""; 
shortname = shortname.concat(lastname); 

編輯:

如@BrianRoach在@Christians解答發表了評論,我們應該用來初始化短名稱。 as

String shortname=lastname; 

來評估串聯的目的。

+0

@BrianRoach:通過在Christian的回答中看到您的評論,我已經在進行編輯。 –

+0

我剛剛發表了同樣的評論,他們所有;) –

+0

好吧,好點雖然:) –