如果你不介意的话,可以给我解释一下吗?我了解这段代码的大部分功能,以及它如何将字符串中的第一个字符大写。我不明白的是如何在句点之后将单词大写,当我阅读代码时,它告诉我它“大写”句点所在的位置(pos),而不是紧随其后的字符或空格然后字符(“this.example”或“this.example”)。有人可以解释一下这段代码如何将句点后面的字符大写吗?如果需要,请使用“today is. a good day”作为“userInput”的输入内容。
int pos = 0;
boolean capitalize = true;
StringBuilder sb = new StringBuilder(userInput);
while (pos < sb.length()) {
if (sb.charAt(pos) == '.') {
capitalize = true;
}
else if (capitalize && !Character.isWhitespace(sb.charAt(pos))) {
sb.setCharAt(pos, Character.toUpperCase(sb.charAt(pos)));
capitalize = false;
}
pos++;
}
最佳答案
这段代码是一种粗略的状态机。只有 if
或 else if
block (或两者都不执行)将在循环的每次迭代中执行。如果当前字符是 .
,则将 capitalize
标志设置为 true
并且在该迭代中不会发生任何其他情况。该标志告诉您的代码将它看到的下一个非空格字符大写。
然后循环将您带到下一个字符,在其中检查大写
标志是否为true
以及该字符不是空白。如果是这种情况,则字符将大写,并且标志将重置为 false
。如果它是空格字符,则不会发生任何事情(capitalize
标志在下一次迭代中保持 true
)。
关于java - 这段 Java 代码发生了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48844104/