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

回答編集履歴

2

指摘反映

2020/05/14 01:11

投稿

momon-ga
momon-ga

スコア4828

answer CHANGED
@@ -36,4 +36,14 @@
36
36
  pos = 0; // 最初からやりなおし
37
37
  }
38
38
  }
39
- ```
39
+ ```
40
+
41
+ 以下コメント
42
+
43
+ > そのやり方では、乱数が
44
+ a c b a c b c a c b c a b
45
+ のような列を生成した時、最初の a c b c を検出できず、
46
+ 2つ目の a c b c で終了します。
47
+
48
+ その通りです。
49
+ 単純にposを0にするのがダメですが、直すのは面倒なのでこのまま放置。

1

あらら・・・

2020/05/14 01:10

投稿

momon-ga
momon-ga

スコア4828

answer CHANGED
@@ -15,4 +15,25 @@
15
15
 
16
16
  文字列連結は、+演算子を使うかStringBuilder#appendを使えばよいです。
17
17
 
18
- 最後の4文字の比較は、[String#lastIndexOf](https://docs.oracle.com/javase/jp/11/docs/api/java.base/java/lang/String.html#lastIndexOf(java.lang.String))というのがあります。
18
+ 最後の4文字の比較は、[String#lastIndexOf](https://docs.oracle.com/javase/jp/11/docs/api/java.base/java/lang/String.html#lastIndexOf(java.lang.String))というのがあります。
19
+
20
+ ---
21
+ あらら退会しちゃいましたか。
22
+ 元のソースっぽくやるなら以下みたいなのを想定していたのだろうかと。
23
+
24
+ ```java
25
+ int pos = 0;
26
+ String[] ans = {"a","c","b","c"};
27
+ String[] mozi = {"a","b","c"};
28
+ Random r = new Random();
29
+ for(int i=0 ; i<1000; i++) {
30
+ String s = mozi[r.nextInt(3)];
31
+ System.out.println(s);
32
+ if(s.equals(ans[pos])) { // s と ans をcharにすれば== 比較ができる
33
+ pos++; // ansの確認を a -> c -> b -> c という風にずらしていく
34
+ if(pos == ans.length) break; // 最後まで一致したらループ終了
35
+ } else {
36
+ pos = 0; // 最初からやりなおし
37
+ }
38
+ }
39
+ ```