【发布时间】:2017-08-21 18:23:34
【问题描述】:
为了好玩,我正在做一个简单的练习。我取一个字符串并得到最长的子字符串:
1. At least one upper case character.
2. No digits.
但是,当我在子字符串“a0Ba”上进行如下循环时:
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”
这是为什么?我很困惑
【问题讨论】:
-
你能把它写成minimal reproducible example的形式吗?你如何获得输出?
arr是什么?等 -
@LukasWiklund OP 的问题说它适用于该输入。有问题的输入是
"a0Ba" -
ericlippert.com/2014/03/05/how-to-debug-small-programs -- 具体来说,在这种情况下,您的程序足够短,您可以手动(即用铅笔和纸)逐步检查它对失败输入的作用,并亲自查看是什么错误的。 “橡皮擦”可能也会有所帮助。
标签: java string loops substring