2017-02-15 9 views
-2

2つの文字列を指定すると、それぞれの最初の文字を除いて連結を返します。文字列は、少なくとも長さ1Javaでstringの最初の文字を省略するにはどうすればいいですか?

ここに私のコードがあるだろうが、私はそれが悪いのか分からない:

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

私のコードがあるが、それはまったく動作しません。

+0

私はすでに自分自身のコードを投稿しています。ごめんなさい –

+1

これはStringクラスが変更できないため、a.substring(1)で変更することはできません。代わりにこの文字列のような別のStringに結果を割り当てる必要があります結果= a.substring(1); – jonhid

+0

宿題は? – Trix

答えて

0

String sがそうaを変更しないa.substring(1)を呼び出して、変更しないでください。代わりに、新しいStringというブランドを作成します。あなたのコーディングスタイルと一緒に行く

、あなたはa =b =を使用してそれらを再割り当てすることによってString S abが参照されている変更する必要があります。

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

あなたはaが今ブランドを指し、それを行う場合には新しいStringは、元の文字より1文字少ないaです。 bは、1文字少ない文字の新しいバージョンbを参照するようになりました。

次に、2つの新しいStringを一緒に追加すると、結果が得られます。

+0

基本的に、私は最初に "a"を宣言する必要がありますか? –

+0

いいえ、 'a'はメソッドヘッダで宣言されます:' 'public String nonStart(String a、...'⇐right) '' a = '行は**' String' aが参照している**だけ変更します。その行の後に、 'a'は参照し始めた' String'を参照しません。これは新しい、より短い 'String'を参照します。 –

0

JavaのStringオブジェクトは変更できないため、連結結果を別の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今、私は理解しています! –

関連する問題