Java字符串循环在数字后停止

时间:2017-03-28 15:23:57

标签: java string loops substring

我正在做一个有趣的简单练习。我拿一个字符串并获得最长的子字符串:

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”

这是为什么?我很困惑

1 个答案:

答案 0 :(得分:1)

当正确的子字符串位于输入的末尾时会出现问题,因为只有在看到数字时才将候选字符添加到列表中。

在循环后将substring的测试添加为非空,并将其添加到arr以解决问题:

// The loop portion of your code remains unchanged:
for (int i = 0; i < s.length(); i++) {
    if (Character.isLetter(s.charAt(i))) {
        substring += s.charAt(i);
    } else {
        arr.add(substring);
        substring = "";
    }
}
// Add this code to fix the problem:
if (!substring.isEmpty()) {
    arr.add(substring);
}