翔泳社SUN教科書JavaプログラマSJC-Pの問題9-10より。(main関数等は省略)

以下の2問は最終的に「xyz」を出力するようなのですが、自分でやるとどうも答え通りにいきません。それぞれの関数後の途中結果を含めて解説をお願いします。
<1問目>
StringBuffer s = new StringBuffer("xxxzzzyyy");
s = s.delete(1,3).replace(1,3,"y").delete(3,6);
System.out.println(s);
<2問目>
StringBuffer s = new StringBuffer("xxxzzzyyy");
s.replace(1,3,"y").delete(2,8).append("z");
System.out.println(s);

回答の条件
  • 1人1回まで
  • 登録:2008/11/02 09:22:43
  • 終了:2008/11/02 16:21:59

回答(2件)

id:RC30-popo No.1

POPO回答回数345ベストアンサー獲得回数132008/11/02 10:51:56

ポイント60pt

ポイントは文字列操作のindexは0から始まる。(一番先頭文字が0,index1は2文字目)

操作する最後の文字は指定されたindex-1

replace(1,3だったら実際に操作されるのは1オリジンで数えた場合は2文字目,3文字目

以下は0オリジンで記載します

1問目

xxxzzzyyyの1文字目,2文字目を削除→xzzzyyy

xzzzyyyの1文字目,2文字目をy1文字に置換→xyzyyy

xyzyyyの3文字目~5文字目を削除→xyz

2問目

xxxzzzyyyの1文字目,2文字目をy1文字に置換→xyzzzyyy

xyzzzyyyの2~7文字目を削除→xy

xyにzを追加→xyz

id:keronimo

replaceの対象となっている文字をすべて変換していたのが原因でした。

2008/11/02 16:21:37

質問者が未読の回答一覧

 回答者回答受取ベストアンサー回答時間
1 uskshv 1 0 0 2008-11-02 10:45:44

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません