- 締切済み
同じ文字を探しカウントしたい
文字を入力し入力されたそれぞれの文字の個数を出力したいのですが 良い処理方法が思いつきません。。。 どのようにコーディングしていけばよいでしょうか? (例)abcb → 出力:aが1個・bが2個・cが1個 どなたかご協力お願いします!
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- ngsvx
- ベストアンサー率49% (157/315)
>何かもっと単純なメソッドや条件分岐からの処理はありませんか? ありません。 いつもいつも、そんな都合のよいものはありません。 ないから自分で作るのです。 また、もしそんなメソッドがあったとして、戻り値はどうなるでしょうか? 文字列配列や数値配列では返せないので、やはりMapのようなものになります。 つまり、どうしても必要なものですので、これを機会に覚えてしまって下さい。 >コレクション・フレームワークなどの理解にはまだまだ至っていません。。。 「コレクションフレームワーク」という名前にビビッてませんか? そんな名前は無視して、まずはドキュメントを読んで下さい。 それほど難しいものではありません。 一応、簡単に使用例を書いておきますから、詳細は自分で調べてください。 HashMap map = new HashMap(); map.put("key-a", "value-a"); map.put("key-b", "value-b"); map.put("key-c", "value-c"); System.out.println(map.get("key-a")); System.out.println(map.get("key-c")); <実行結果> value-a value-c
- pcbeginner
- ベストアンサー率46% (261/560)
>文字を1文字ずつ読むとは配列として取得するということですか? Stringに文字列を格納しているのなら StringクラスのcharAt(int index)メソッド StringクラスのJavaDocを1度熟読することをお奨めします。
お礼
StringクラスのJavaDocですね? 探してみます。 ありがとうございました。
- ngsvx
- ベストアンサー率49% (157/315)
配列というものはご存じでしょうか? 普通の配列は添え字に数字を用いますが、添え字に文字列を使う配列があります。 「連想配列」と呼ばれるものです。 連想配列は言語によってはサポートされているものもありますが、JAVAでは言語仕様としてはサポートされていません。 言語仕様ではありませんが、代りに連想配列の機能を標準APIで提供しています。 java.util.Mapというインターフェースです。 これを使えば、文字列をキーとして任意のオブジェクトを取得・設定が行えます。 今回の場合、文字を「キー」に、カウントを「キーに割り当てられた値」とすれば簡単にカウントできます。 なお、Mapインターフェースの実装にはjava.util.HashMap等がありますので、実際にはこれを使うこととなるでしょう。 具体的な使い方はドキュメントを参照してください。
補足
詳しい解説ありがとうございます。 ですが、私があまりにも初心者なものですから コレクション・フレームワークなどの理解には まだまだ至っていません。。。 何かもっと単純なメソッドや条件分岐からの処理はありませんか?
- aru99
- ベストアンサー率18% (8/44)
こんなところでしょうか… 文字格納構造体 文字 数 LOOP開始 条件判定1:文字を1文字づつ読む 最後まで読んだらLOOP抜け 条件判定2:格納済みの文字と1文字読んだ文字との比較 1文字読んだ文字を文字格納構造体.文字に格納 1文字読んだ文字で文字列を検索 検索結果を文字格納構造体.数に格納 条件判定2終了 条件判定1終了 LOOP終了
補足
質問よろしいですか? 文字を1文字ずつ読むとは配列として取得するということですか?
お礼
ありがとうございます。 色々なサイトから調べてみているところです。 ご協力に感謝します。