0
私は楽しいための簡単なエクササイズをしています。ストリング「a0Ba」上数字の後にJava文字列ループが停止する
1. At least one upper case character.
2. No digits.
をしかし、のようなIループが続く場合:私は、文字列を取り、持っている最長の部分文字列を取得
for (int i = 0; i < s.length(); i++) {
if (Character.isLetter(s.charAt(i))) {
substring += s.charAt(i);
}
else {
arr.add(substring);
substring = "";
}
}
ゼロで停止し、続行しないように思われます。たとえ有効な部分文字列 "Ba"が直後に来ても。
私はこの部分文字列で実行されます:「AsdF0ASDFGffdfr09asd0sd0sd0e」
それは結構な働きをし、正しいストリングを返します:「ASDFGffdfr」
なぜこれがあるの?私はとても混乱しています
あなたは[MCVE]の形でこれを置くことができます:
問題を解決するために、ループ後の非空であると
arr
に追加するsubstring
のためのテストを追加しますか?どのように出力を取得していますか? 'arr'とは何ですか?など – pvg@ LukasWiklund OPの質問は、その入力のためにうまく動作すると言います。問題のある入力は '' a0Ba "' – dasblinkenlight
https://ericlippert.com/2014/03/05/how-to-debug-small-programs/です - 具体的には、あなたのプログラムはあなたができるほど短いです手作業で(つまり、鉛筆と紙で)あなたの失敗した入力で何をするかを突き止め、何が間違っているかを見てください。おそらく "ラバーダッキング"も助けになるでしょう。 – slim