我是个初学者。如果字符串输入由'l‘+’任何字符‘+ 'l’组成,我的代码需要显示“是”。例如,"uwbıclsl“应该有一个”是“输出,因为一个字母夹在两个l之间。然而,由于我的打印语句在For循环中,它会显示几个”是“和”否“。如何修复它,使我只有一个输出(是或否),并且仍然有打印语句而不是返回?
for (int i = 0; i < s.length(); i++) {
if ((s.charAt(i) == 'l') && (s.charAt(i + 2) == 'l')) {
System.out.print("YES");
} else
System.out.print("NO");发布于 2019-04-06 17:37:19
做以下改变-
String result = "NO";
for (int i = 0; i < s.length(); i++) {
if ((s.charAt(i) == 'l') && (s.charAt(i + 2) == 'l')) {
result = "YES";
}
}
System.out.println(result);注意-您现在不需要其他块,您还需要在您的if语句中处理StringIndexOutOfBoundsException异常,希望您能够解决这个问题。
发布于 2019-04-06 17:30:51
最好为此使用regexes。
System.out.println(s.matches(".*l.l.*") ? "YES" : "NO");发布于 2019-04-06 17:28:22
如果您只需要打印一次“是”/“否”,请尝试以下操作。即使多个匹配,它也只是说是一次。还将"for“循环结束长度固定为( length ()-2),以避免异常。如果您有任何问题,或者这不是一个预期的解决方案,请发表评论。
boolean isFound = false;
for (int i = 0; i < s.length()-2; i++) {
if ((s.charAt(i) == 'l') && (s.charAt(i + 2) == 'l')) {
isFound = true;
}
}
System.out.println (isFound?"YES":"NO");https://stackoverflow.com/questions/55551607
复制相似问题