2017-02-15 101 views
-2

給定2個字符串,返回它們的連接,除了省略每個字符的第一個字符。該字符串將至少長度爲1如何在Java中省略字符串的第一個字符?

這裏是我的代碼,但我不知道什麼地方錯了:

public String nonStart(String a, String b) { 
     a.substring(1); 
     b.substring(1); 
     return a + b; 

有我的代碼,但它並沒有在所有的工作。

+0

我已經發布了自己的代碼對不起, –

+1

這是因爲String類是不可變的,你不能用a.substring(1)來改變它,而不是你應該把結果賦值給另一個String,像這樣String result = a.substring(1); – jonhid

+0

作業的東西? – Trix

回答

0

String不會變化,因此調用a.substring(1)不會改變a。相反,它會創建一個全新的String

與您的編碼風格一起去,你需要使用a =b =重新分配他們改變String小號ab指的是哪種:

public String nonStart(String a, String b) { 
     a = a.substring(1); 
     b = b.substring(1); 
     return a + b; 
} 

當你這樣做,a現指品牌新的String,比原來的a少一個字符。 b現在指新版本的b,少一個字符。

然後,當您將兩個新的String加在一起時,就會得到您想要的結果。

+0

基本上,我需要聲明「一個」第一個權利? –

+0

不,在方法頭文件中聲明'a':('''''''''''''''''''''public String nonStart(String a,...'⇐就在這裏)'a ='只是改變**'String'a所指的**。在那一行之後,'a'並不是指它引用的'String',而是指新的較短的'String'。 –

0

由於Java中的對象是不可變的,所以必須將拼接的結果放入另一個String

public String nonStart(String a, String b) 
{  
    String S = ""; // new String object 
    S += a.substring(1); // concatenation with String a, without first character 
    S += b.substring(1); // concatenation with String b, without first character 
    return S; 
} 
+0

Thx很多現在我明白了! –

相關問題