給定2個字符串,返回它們的連接,除了省略每個字符的第一個字符。該字符串將至少長度爲1如何在Java中省略字符串的第一個字符?
這裏是我的代碼,但我不知道什麼地方錯了:
public String nonStart(String a, String b) {
a.substring(1);
b.substring(1);
return a + b;
有我的代碼,但它並沒有在所有的工作。
給定2個字符串,返回它們的連接,除了省略每個字符的第一個字符。該字符串將至少長度爲1如何在Java中省略字符串的第一個字符?
這裏是我的代碼,但我不知道什麼地方錯了:
public String nonStart(String a, String b) {
a.substring(1);
b.substring(1);
return a + b;
有我的代碼,但它並沒有在所有的工作。
String
不會變化,因此調用a.substring(1)
不會改變a
。相反,它會創建一個全新的String
。
與您的編碼風格一起去,你需要使用a =
和b =
重新分配他們改變String
小號a
和b
指的是哪種:
public String nonStart(String a, String b) {
a = a.substring(1);
b = b.substring(1);
return a + b;
}
當你這樣做,a
現指品牌新的String
,比原來的a
少一個字符。 b
現在指新版本的b
,少一個字符。
然後,當您將兩個新的String
加在一起時,就會得到您想要的結果。
基本上,我需要聲明「一個」第一個權利? –
不,在方法頭文件中聲明'a':('''''''''''''''''''''public String nonStart(String a,...'⇐就在這裏)'a ='只是改變**'String'a所指的**。在那一行之後,'a'並不是指它引用的'String',而是指新的較短的'String'。 –
由於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;
}
Thx很多現在我明白了! –
我已經發布了自己的代碼對不起, –
這是因爲String類是不可變的,你不能用a.substring(1)來改變它,而不是你應該把結果賦值給另一個String,像這樣String result = a.substring(1); – jonhid
作業的東西? – Trix