2016-03-01 88 views
-2

我想將String以s1逐個字符的形式複製到字符串finalstring中,使用String.charAt()。此代碼的工作:如何使用charAt將字符逐個輸入到字符串變量中?

public static String Comparison(String s1) { 
    String finalstring = "" + s1.charAt(0); // Doubt in this line 

    for (int j = 1; j < s1.length(); j++) { 
     if(s1.charAt(j) != s1.charAt(j - 1)) { 
      finalstring += s1.charAt(j); 
     } 
    } 
    return finalstring; 
} 

然而,當我更換與此標記線...

String finalstring = s1.charAt(0); 

...編譯器發出錯誤該行:「無法從字符轉換成字符串」。爲什麼這種變化會導致這種錯誤?

+2

轉換charString我也不能說我在乎你的方法,但你的代碼編譯就好了我。 –

+0

如果您想詢問一段代碼中的錯誤,可以提供導致錯誤的代碼。** –

回答

1

在Java(以及大多數類型化語言)中,字符串與字符不同。

String.charAt()返回一個字符不是字符串。

""+s1.charAt(0)將一個空字符串與一個char連接起來。結果是一個String,所以可以賦給finalstring變量。

+0

實際上,對於字符串和單個字符沒有不同的類型是相當常見的。 Python,Perl,Ruby,甚至Fortran都是這樣。這些都是鍵入語言,但前三個不是*靜態*鍵入。 –

+0

無論如何,這並沒有解決OP爲什麼會出錯的問題。 –

+1

@John Bollinger:我想你還沒有理解OP的問題。他問:爲什麼我需要添加額外的'「」+「。 – Xvolks

0

String.charAt()返回一個字符不是字符串。因此,您必須追加""將其轉換爲字符串

這就行了。

String x = 'c'+""; 

您可以通過

String.valueOf('c'); 
+0

是的,編譯。 OP也是如此,那麼對此問題的反應如何呢? –

+0

「我很懷疑爲什麼我們在將第一個字符輸入到finalstring變量之前使用了空格。」他對將char轉換爲String的問題有些懷疑。所以我建議了另一種方法。 – FallAndLearn

+0

OP的錯誤實際上並不涉及空間字符。但是,如果是這樣,一個響應的答案需要解釋爲什麼。 –

相關問題