HOME»基本情報技術者試験掲示板»科目B 出るとこだけ
投稿する

科目B 出るとこだけ [6093]

 yuさん(No.1) 
科目B対策のために

出るとこだけ科目B 予想過去問題集を使用しているのですが、

予想問題3の問10のオブジェクトの問題の答えがまったく、納得できません。

同じ参考書を持ってる方、
この参考書の答えは正しいでしょうか?

解説で3行あたりから、間違ってる気がします。
2025.09.28 15:49
ORさん(No.2) 
同じく出るとこだけで勉強してる者です。

私は、この解説部分は間違ってないと思いますよ。
私なりではありますが、解説失礼します。

このプログラム3行目の最初のsb. insert(3,  sb. reverse(). toString())の中には、場所を示す3と、追加すべきstrを返すメソッド sb. reverse(). toString()が存在します。

ここで解説の3、4行目が役立ちます。
原則左から順に、しかし例外として、カッコがあるならその中の左から実行とあります。

だから、3行目のプログラムはsb.insertではなく、()の中にあるsb.reverse().toString()を先に実行する必要があります。

そして、4行目。
これは3行目と違い、最初のsb. reverse()の()内には何もありません。ですから、一番最初に行うべきメソッドは、これです。

次のsb. insert(4, sb.reverse().toString())もまた、()の中に、場所を示す4番目とstrを返すメソッドがあります。なら、カッコ内のメソッドから実行しましょう。

このように、このメソッドたちは必ずしも英単語の後ろには()がついています。()の中にある、整数型や文字列型には何が入っているか、そもそも何も書かれていないのか、正しく見分ける必要があります。

私が思うに、このオブジェクト指向問題の注意すべき点は、『()の中にメソッドがあるかどうか』だと思いますから、そこを気をつければ正解できるようになるかと。


もし既に解決、又は疑問点とズレていましたら、申し訳ございません。
2025.09.28 23:55
 yuさん(No.3) 
ORさん

ご回答ありがとうございます。
sb. insert(3,  sb. reverse(). toString()) は

 insert()の中のsb. reverse()を最初に実行した時点で
元となる外側のsbの文字列も反転するということなんですね。

私の考えは元となる外側のsb影響受けないと思っていました。

このreverse()は破壊的(元の変数が変わる)ということなんですね。

ご回答ありがとうございました。
2025.09.30 08:56
jjon-comさん(No.4) 
FE プラチナマイスター
私はその問題集を持っていませんので、
.reverse()がその本でどう定義されているかも知りません。
一般論として述べます。

> sb. reverse()を最初に実行した時点で
> 元となる外側のsbの文字列も反転するということなんですね。
> 私の考えは元となる外側のsb影響受けないと思っていました。
> このreverse()は破壊的(元の変数が変わる)ということなんですね。

いいえ、違います。
sb.reverse() はsbを反転したオブジェクトを戻り値として返し、
sb.reverse().toString() は上記の戻り値を文字列にしています。

各メソッドが戻り値を返し、その戻り値に対してメソッドチェーンをつなげています。
sb.reverse() が sb自体を変化させているかどうかは無関係です。
2025.09.30 12:33
 yuさん(No.5) 
jjon-comさん
ご回答ありがとうございます。
 sを"ABC"として

◯整数型:stringProcessing(文字列型:s)
StringBuffer: sb ← StringBuffer (s)
sb ← sb. insert (3, sb. reverse ).toString()).reverse()

この時点で
私な考えでは、CABCBAだとおもうのですが
テキストでは、AABCBCになっております。

私の何がダメなのかわかりません…
2025.09.30 21:22
jjon-comさん(No.6) 
FE プラチナマイスター
通勤途中の書店で立ち読みしてきました。

ごめんなさい,No.4 には間違いが2つあります。つまり全面的に間違っています。

1点目。
reverse()は次のように定義されていました。
メソッド:reverse()
戻り値:StringBuffer
説明:メンバ変数strの文字列の順序を逆順にし,インスタンスへの参照を返す。
クラスStringBuffer型のインスタンスsb内のメンバ変数strの文字列を逆順にし,
そのインスタンスへの参照を戻り値として返すのですから,
> このreverse()は破壊的(元の変数が変わる)ということ
になります。

2点目。
一般的なメソッドの命名からしても,
.reverse()が破壊的なメソッドで,.reversed()が元の値を変えないメソッドでした。
2025.10.01 10:38
 yuさん(No.7) 
jjon-comさん

書店での確認頂きありがとうございます。<m(__)m>
やはり、破壊的だったんですね、、

私の知識で定義の説明内容を見ても破壊的と認識できませんでした泣

てっきり、このように
sb = sb.reverse()
再代入が必要なのかと思ってしまいました。

お付き合い頂きありがとうございました。
これで、次に進めます!
2025.10.01 11:56
返信投稿用フォーム
お名前
顔アイコン

本文(コミュニティガイドライン⇱を順守して適切な投稿を心がけましょう)
🔐投稿削除用のパスワード(任意)
投稿プレビュー
※CBT試験では出題内容の公開が禁止されているため、直接的・間接的を問わず、出題内容や難易度を尋ねる質問は厳禁です。
※宣伝や迷惑行為を防止するため、当サイト、姉妹サイト、IPAサイト以外のURLを含む文章の投稿はできません。
投稿記事削除用フォーム
投稿No. パスワード 
© 2010- 基本情報技術者試験ドットコム All Rights Reserved.

Pagetop