すみません、なぜこのコードの 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文字列の後半を直接インターセプトする必要があると思います。