質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
for

for文は、様々なプログラミング言語で使われている制御構造です。for文に定義している条件から外れるまで、for文内の命令文を繰り返し実行します。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Q&A

解決済

3回答

1557閲覧

for文を使うとき、ab1を次の繰り返しに持っていきたいです

nakagen

総合スコア24

for

for文は、様々なプログラミング言語で使われている制御構造です。for文に定義している条件から外れるまで、for文内の命令文を繰り返し実行します。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

0グッド

1クリップ

投稿2020/07/29 09:19

編集2020/07/29 09:22

理想のコンソールとしては

文字列を入力してください:あいうえお

あいうえお
いうえおあ
うえおあい
えおあいう
おいあうえ

といった表示がしたいのですが

下のコードを使うと

いうえおあ
いうえおい
いうえおう
いうえおえ
いうえおあ

といった表現になってしまいます。

package kadai; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class kadai2 { public static void main(String[]args)throws IOException { System.out.print("文字列を入力してください:"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = br.readLine(); int len = str.length(); for(int i = 0;i<len;i++) { char ch = str.charAt(0+i); StringBuffer ab = new StringBuffer(str); ab.insert(len,ch); StringBuffer ab1 = new StringBuffer(ab); ab1.deleteCharAt(0); System.out.println(ab1); } } }

そこで、forの中のab1を繰り返すときに、次に持っていけないか考えました。

例えば、1回目のときのab1を、2回目のstrの部分に入れたいです。

もし、根本的な間違いがあれば、教えていただければ幸いです。

また、「あいうえお」の部分も、実行結果でだしたいのですが、教えてほしいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2020/07/29 09:22

そのab1はどこで定義されてるんでしょうか #質問が尻切れになってます。おそらくバグですんで、質問を編集して保存し直してください
nakagen

2020/07/29 09:26

ただいま、修正しました(m__m) ab1は、StringBuffer でstrの最後に最初の文字を挿入したabに最初の文字を消すように指示する部分で定義しています 分かりにくくてすみません、、、
guest

回答3

0

ベストアンサー

abには常に一回前の状態が確保されているので、「先頭1文字を末尾に追加し、先頭1文字を削除する」を繰り返すだけでいいのです。

Java

1import java.io.BufferedReader; 2import java.io.IOException; 3import java.io.InputStreamReader; 4 5public class kdadi2 { 6 public static void main(String[] args) throws IOException { 7 System.out.print("文字列を入力してください:"); 8 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 9 10 String str = br.readLine(); 11 int len = str.length(); 12 13 StringBuffer ab = new StringBuffer(str); 14 for (int i = 0; i < len; i++) { 15 System.out.println(ab.toString()); 16 17 char ch = ab.charAt(0); 18 ab.append(ch); 19 ab.deleteCharAt(0); 20 } 21 } 22} 23

投稿2020/07/29 12:19

編集2020/07/29 13:10
Daregada

総合スコア11990

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

momon-ga

2020/07/29 13:04 編集

あいうえお いうえおあ うえおあい えおあいう おあいうえ のように、出力したいようなので、sysoutをループの先頭にしたほうが良いと思います。
Daregada

2020/07/29 13:05

おっと、修正しておきます。
nakagen

2020/07/29 14:22

何とか出来ました!有り難うございます! 質問をしたいのですが、toStringとは、どのようなものでしょうか…? 厚かましいようで申し訳ないのですが、toStringを使わないで実行できる方法ってあるのでしょうか…?
Daregada

2020/07/29 14:34

printlnするだけならtoStringは必要ありませんね。 toStringは、StringBufferで作成された内容から、Stringの値を得るときに使います。 StringBufferで作成した内容から、「以後、変化しない文字列としての値が欲しい」ときに使うんですが、今回は手が滑りました。
guest

0

変数というのは、変数を定義したそのブロックの中だけしか使えません
つまり、ab1はそのfor文の{}括弧の外にはでれません。

ということで、for文の外でも使えるようにするなら、for文の外側で定義してやればいいです
そうすれば、有効範囲は関数の{}カッコの中となります

投稿2020/07/29 09:33

y_waiwai

総合スコア87719

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nakagen

2020/07/29 09:36

つまり、ab1ではなくべつの変数を作らないといけないということでしょうか・・・?
y_waiwai

2020/07/29 09:40

StringBuffer ab = new StringBuffer(str); の行を、for文の手前に移動してやればいいです
nakagen

2020/07/29 09:48 編集

先ほどの文は、私のミスでした(m__m) 試しに入れてみたのですが、今度は、 いうえおあ いうえおいあ いうえおういあ いうえおえういあ いうえおおえういあ という結果になってしまいました 前の文字列を消すメソッドをご存知でしたら教えていただければ助かります…
y_waiwai

2020/07/29 10:01

StringBuffer ab = new StringBuffer(str); for(int i = 0;i<len;i++) { char ch = str.charAt(0+i); ab.append(ch); ab.deleteCharAt(0); System.out.println(ab); } ちょっと問題を勘違いしてました。 これでどうでしょう(うごかしてませんが)
nakagen

2020/07/29 10:06

いうえおああ うえおあいあい えおあいうあいう おあいうえあいうえ あいうえおあいうえお となってしまいました…
nakagen

2020/07/29 10:10

付け加えた文が2つ発生している状態ですね…
bsjbbztqfuzj11

2020/07/30 06:50

y_waiwai ってのは大した知識も無いのにマウントをとりたいだけの馬○なので全く宛てになりませんよ。笑 この人の回答一覧を見れば分かります。 まったく内容が無いです。残念なガラ。。
guest

0

質問に対する回答ではないですが、単純にやりたいことを実現するだけなら

java

1String str = br.readLine(); 2 3int len = str.length(); 4str = str + str; 5 6for(int i = 0; i < len; i++) { 7 System.out.println(str.substring(i, i + len)); 8}

でも、良いかと思います。

StringBuilder(StringBuffer)を使うための練習だとしたらゴメンなさい

投稿2020/07/29 10:57

momon-ga

総合スコア4820

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問