2013-04-06 397 views
1
int length = s.length(); 

if (length = 0){ 
    return s; 
} 

else { 
    return s.charAt(0).toUpperCase()+ s.substring(1); 
} 

的大寫格式,我得到兩個錯誤說:如何採取一個字符串,並返回一個字

if (length = 0){ 
^^^^^^^^^^ 
Type mismatch: cannot convert from int to boolean 


return s.charAt(0).toUpperCase()+ s.substring(1); 
     ^^^^^^^^^^^^^^^^^^^^^^^^^ 
Cannot invoke toUpperCase() on the primitive type char 

另外,如果它是一個空的刺痛它應該只是返回。 這就是爲什麼我使用If-Else語句。

回答

3

if (length = 0)應該if (length == 0)

你值爲0分配給length而不是比較爲0。

我建議你看一看this

在運行時,賦值表達式的結果是賦值發生後變量的值 。 賦值表達式的結果本身不是一個變量。

這樣,你的if是因爲它裏面的價值評估,以所分配的(0在這種情況下)的值永不滿足,所以你的程序進入else,有你應該:

return Character.toUpperCase(s.charAt(0)) + s.substring(1); 
+1

完美解釋!謝謝 :) – Kimmm 2013-04-06 06:58:11

2

在您的if聲明中,您將值0指定爲length。正因爲如此,編譯器會抱怨,因爲它期望boolean表達式,而不是if語句中的int(賦值返回它正在分配的值,這就是爲什麼它提到了int)。

您的意思是使用==來代替布爾表達式。

第二個問題是因爲charAt(int)返回一個char原語,它沒有任何方法。

在這種情況下,您可能需要在String的第一個字符上使用Character.toUpperCase(char),然後再附加其他字符。

2

你錯過了== if語句

charAt(0)返回一個字符,一個做這樣的字符串的方法是Character.toString(c)

0

它改成這樣:

if (length == 0) { 
    return s; 
} 

return Character.toUpperCase(s.charAt(0)) + s.substring(1); 

注:如果字符串的長度正好是1,你仍然得到一個錯誤,因爲s.substring(1)。您可能要添加一個附加條件時,字符串的長度正好是1

0

這條線:

if (length = 0) { 

的意思是「我想設置的長度爲零」。但是,你要的是

if (length == 0) { 

這意味着「是長度等於零?

第一條語句最終結果爲異常,因爲你傳遞一個整數到一個地方,布爾是預期。

0

也許你可以試試這個:

String s = "testing"; 
String upper = s.toUpperCase(); 
System.out.print(upper); 
相關問題