• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:文字列を逆転させて表示するには)

Javaで文字列を逆転させる方法とは?

このQ&Aのポイント
  • Java初心者の方が文字列を逆転させる方法について教えてください。
  • Javaのreverseメソッドを使わずに、for文とchar型を使用して文字列を逆転する方法を教えてください。
  • 質問に掲示されているプログラムには一部不適切な部分がありますが、目標とは異なる結果が出力されているようです。解決策を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • tom11
  • ベストアンサー率53% (134/251)
回答No.4

こんにちは、 >最初に質問書いた時にコメントアウトしたこの部分と同じ意味ですよね。 失礼しました。 コメント文、見逃していました。 ということで、同じような、処理なのですが。 追加の一例を、書きました。 String ss="abcdefg"; StringBuffer sb1 = new StringBuffer(); for(int i=0;i<ss.length();++i){ sb1.insert(0,ss.charAt(i)); } System.out.println(sb1.toString()); これでも、 結果は、 gfedcba になるようです。 StringBufferも、いろいろと便利な時があるみたいです。

HUNK
質問者

補足

遅くなってすいません!すいません・・・うう・・・。 回答有難う御座います。 >失礼しました。 いえいえ全然構いません。 まだ初心者なので少しの書き方の違いでも勉強になるんです。 細く有難う御座います。 >sb1.insert(0,ss.charAt(i)); この部分のinsertメソッド(?)と括弧の中身の意味と役割がまだ学習しておらず分かりませんが、自分で調べてみますorz 便利ですね~使いこなせるようになりたいです。 有難う御座いました。

その他の回答 (4)

  • PED02744
  • ベストアンサー率40% (157/390)
回答No.5

Stringクラスは特殊なので、 >value = value + c; これをループの中で使うと、文字列が長い場合、大量のStringクラスのゴミが できてしまいます。(Stringクラスは書き換えができないので、新規作成してしまう) ANo.4さんの様にStringBufferを使って先頭からアペンドするか、 ANo.2さんの様にchar配列を使って見かけ上入れ替えを行う(実際には入れ替わっていない) をするか、したほうがよろしいでしょう。 私個人としては、ANo.4さんの回答が好きかな(笑)

HUNK
質問者

補足

遅くなってすいません! 回答有難う御座います。 調べたらそうですね、書き換えできないんですねstring・・・全然意識して無かったです。 まだ全然使いこなせませんが、StringBufferクラスはその逆のようですね。 >大量のStringクラスのゴミができてしまいます 出ましたね、増えていく過程がわらわらと(笑) 自分の中ではNo2さんのtoCharArrayやNo3さんのreverse()等のJavaで用意された便利な文法は、未熟な自分にとってまだ高級過ぎるのでfor charやわりと初期の文法でなんとか過程を示さずに結果のみを出す方法を見つけてみたいですね。 この質問の前に先生にネットで調べたreverseメソッド(質問時にコメントアウトした箇所)を利用してみせたら、もっと基本的な部分な文法でやってみてくださいと言われたのも理由のひとつですが(笑)。 でもいつかはNo2、3さんのような便利なメソッドまで使いこなせるようになるつもりです。 No2,4さん達のようにやってみました。ハハ、テクニック色々ありますね。みなさんに感謝です。

  • tom11
  • ベストアンサー率53% (134/251)
回答No.3

こんにちは、 String ss="abcdefg"; StringBuffer sb = new StringBuffer(ss); System.out.println(sb.reverse().toString()); 実行結果 gfedcba StringBufferクラスにリバースそのものがあります。

HUNK
質問者

補足

遅くなりましたが有難うございます! //StringBuffer sbrev = new StringBuffer(str); //String strrev = sbrev.reverse().toString(); //System.out.println(strrev); 最初に質問書いた時にコメントアウトしたこの部分と同じ意味ですよね。 String ss="abcdefg"; StringBuffer sb = new StringBuffer(ss); System.out.println(sb.reverse().toString()); 指摘を受けたこちらも同様に動作確認しました。 有難うございました。

  • hilow1
  • ベストアンサー率53% (7/13)
回答No.2

最初から配列にしてしまう方法はどうでしょうか? (これだと楽しすぎでしょうか 笑) public class Test {   public static void main(String[] args) {     String str = "abcdefg";     char[] cStr = str.toCharArray();     for(int i=str.length()-1; i>=0; i--) {       System.out.println(cStr[i]);     }   } } 「str.length()-1」の"-1"は、配列として考えてみると分かりやすいと 思います。"abcdefg"の1文字目aは配列でいうと0番目で、つまり末尾 (7文字目)のgは6番目です。ですから、"文字数-1"を指定します。 間違ってたらすいません!!

HUNK
質問者

補足

アドバイス有難うございます! >これだと楽しすぎでしょうか 笑 いえいえ私にとってとても役立ちます、ハハハ。 なるほど配列ですか。 そういうやり方ありましたね、盲点! お~役立ちますこういう時に、配列! 分かりやすいですね。 確かに配列は番号が0から始まりましたね。 それで-1にして合わせてたんですね、そういや勉強した覚えがあります・・・orz 度々見ますよね、こういう表示。 ToCharArray()メソッドというのは私としては初めてですね。 文字列をchar型の配列に変換するんですか! 便利なのあるんですね。 知らなかった・・・。 これこの場合の配列には必要不可欠ですね、きっと。 納得できました、有難うございました。

回答No.1

ハハ、逆から読んだらどう? // for(int i = 0; i < str.length(); i++) { for(int i = str.length() - 1; i >= 0 ; i--) {

参考URL:
http://sdc.sun.co.jp/java/docs/j2se/1.4.2/ja/index.html
HUNK
質問者

補足

アドバイス有難うございます! でけた~~~♪ for(int i = str.length() - 1; i >= 0 ; i--) { ↑これなんですが自分も直感的にコレに似た for(int i = str.length(); i >= 0 ; i--) { 作ったりしたんですが、なぜ初期値をint i = str.length() - 1にしないと駄目なのか、分かりません。ようは「-1」の部分ですね。 あと出来れば逆転した結果のgfedcbaを増えていく経過を表示せずに1文のみ表示させてみたいのですが、どうすればいいでしょうか。

関連するQ&A

専門家に質問してみよう