Java 在for循环中打印语句,导致多个输出而不是一个输出,如何在不使用";return";?

Java 在for循环中打印语句,导致多个输出而不是一个输出,如何在不使用";return";?,java,string,for-loop,Java,String,For Loop,我是一个初学者。如果字符串输入由“l”+“任何字符”+“l”组成,我的代码需要显示“是”。例如,“uwbıclsl”应该有一个“yes”输出,因为一个字母夹在两个l之间。但是,由于我的print语句在for循环中,因此它会显示几个“是”和“否”。如何修复它,使我只有1个输出(是或否),并且仍然有打印语句而不是返回 for (int i = 0; i < s.length(); i++) { if ((s.charAt(i) == 'l') && (

我是一个初学者。如果字符串输入由“l”+“任何字符”+“l”组成,我的代码需要显示“是”。例如,“uwbıclsl”应该有一个“yes”输出,因为一个字母夹在两个l之间。但是,由于我的print语句在for循环中,因此它会显示几个“是”和“否”。如何修复它,使我只有1个输出(是或否),并且仍然有打印语句而不是返回

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");
for(int i=0;i
如果您只需要打印一次是/否,请尝试下面的方法。即使有多个匹配项,它也只会说一次是。还将“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");
boolean isFound=false;
对于(int i=0;i
最好为此使用正则表达式

System.out.println(s.matches(".*l.l.*") ? "YES" : "NO");

您还可以删除循环并使用正则表达式

String s = "uwbıclsl".matches(".*(l.l).*") ? "yes" : "no";
        System.out.println("s = " + s);

如果您发现两个
l
被另一个字符分隔,您可以稍微修改当前代码,使其位于单独的方法中,然后返回
“Yes”
,因为您不需要继续检查字符串的其余部分:

class Main {
  public static void main(String[] args) {
    String str = "uwbıclsl";
    System.out.println(charBetweenTwoLs(str));
    String str2 = "abclol";
    System.out.println(charBetweenTwoLs(str2));
  }

  static String charBetweenTwoLs(String str) {
    for (int i = 0; i < str.length() - 2; i++) { // Note the - 2 since you are checking on each iteration 2 characters ahead.
      if (str.charAt(i) == 'l' && str.charAt(i+2) == 'l') {
        return "Yes";
      }
    }
    return "No"; // return No if two 'l' characters were not found sperated by another character.
  }
}
执行以下更改-

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);
String result=“否”;
对于(int i=0;i

注意-您现在不需要else块,还需要在if语句中处理
StringIndexOutOfBoundsException
异常,希望您能解决此问题。

打印
放在循环之后(并使用
布尔值
确定应该显示哪一个),您还需要将循环保护更改为
i
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);