84669 人が学習中
152542 人が学習中
20005 人が学習中
5487 人が学習中
7821 人が学習中
359900 人が学習中
3350 人が学習中
180660 人が学習中
48569 人が学習中
18603 人が学習中
40936 人が学習中
1549 人が学習中
1183 人が学習中
32909 人が学習中
すみません、なぜこのコードの while ループが else の後ろの部分に入ると、後続の while ループは前半の分岐に入ることはできなくなるのですか? if以降の条件が満たされていれば良いと思いますが、実行結果は最初のループに入れないので壊れません。神にアドバイスを求める:
パブリック クラス SearchString {
}実行結果は -1 10 13 -1 10 13、無限ループです
3回目のクエリでは結果が一致しないため、indexOf()の第2パラメータが0未満の場合は0として扱われます。 それで、最初のサイクルが再び始まります。
ブレークポイントを使用してデバッグでき、結果は非常に明確になります
2回目のループに入るとelseが入り、posは13になります。次のループ、つまり 3 番目のループに入っても、else に入ります。 今度はelseでaが16になり、posが-1になり、次のループs1,indexOf(s2,pos)が0のままelseに入ってしまうので、無限ループが発生します。
elseのposを毎回変更する必要はなく、s1文字列の後半を直接インターセプトする必要があると思います。
3回目のクエリでは結果が一致しないため、indexOf()の第2パラメータが0未満の場合は0として扱われます。
それで、最初のサイクルが再び始まります。
ブレークポイントを使用してデバッグでき、結果は非常に明確になります
2回目のループに入るとelseが入り、posは13になります。次のループ、つまり 3 番目のループに入っても、else に入ります。
今度はelseでaが16になり、posが-1になり、次のループs1,indexOf(s2,pos)が0のままelseに入ってしまうので、無限ループが発生します。
elseのposを毎回変更する必要はなく、s1文字列の後半を直接インターセプトする必要があると思います。