teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

追加

2022/01/19 07:41

投稿

jimbe
jimbe

スコア13357

answer CHANGED
@@ -1,5 +1,9 @@
1
- chAB if が連続して実行可能であったり、 'A' x=x+1 が if 文の外にあったり、 'B' の置き換え位置がだったりで、置きえが sui11 さんの想定のようにはわれていないと思います。
1
+ > 一つの文字列に対して2種類の変換を複数回をうfor文の作り方
2
2
 
3
+ ご提示のコードの問題は、結果的に for のループ一回につき 2 種類の置換を**同時に**行ってしまっている点と思います。本来は for のループ一回につき 2 種類の置換の**どちらか**を行うことのはずです。
4
+
5
+ chAB の if 文が連続して実行可能であったり、 'A' の x=x+1 が if 文の外にあったり、(その為に?) 'B' の置き換え位置が変だったりで、置き換えが sui11 さんの想定のようには行われていないと思います。
6
+
3
7
  次のように書けます。
4
8
  ```java
5
9
  public class fibw {

2

追加

2022/01/19 07:12

投稿

jimbe
jimbe

スコア13357

answer CHANGED
@@ -3,6 +3,26 @@
3
3
  次のように書けます。
4
4
  ```java
5
5
  public class fibw {
6
+ public static void main(String[] args){
7
+ StringBuffer f = new StringBuffer("B");
8
+ for(int i = 1; i<=10;++i){
9
+ for(int x=0;x<f.length();++x){
10
+ char chAB = f.charAt(x);
11
+ if(chAB == 'A') {
12
+ f.replace(x,x+1,"AB");
13
+ x ++;
14
+ } else if(chAB == 'B') {
15
+ f.replace(x,x+1,"A");
16
+ }
17
+ }
18
+ System.out.println("Fib"+i+"= "+f);
19
+ }
20
+ }
21
+ }
22
+ ```
23
+ もう少し整理するとこんな感じにも。
24
+ ```java
25
+ public class fibw {
6
26
  public static void main(String[] args) {
7
27
  StringBuffer f = new StringBuffer("B");
8
28
  for(int i=1; i<=10; i++) {

1

修正

2022/01/19 07:10

投稿

jimbe
jimbe

スコア13357

answer CHANGED
@@ -1,4 +1,4 @@
1
- chAB の if 文が連続して実行可能であったり、 'A' の x=x+1 が if 文の外にあったりで、置き換えが sui11 さんの想定のようには行われていないと思います。
1
+ chAB の if 文が連続して実行可能であったり、 'A' の x=x+1 が if 文の外にあったり、 'B' の置き換え位置が変だったりで、置き換えが sui11 さんの想定のようには行われていないと思います。
2
2
 
3
3
  次のように書けます。
4
4
  ```java