Java for循环中的增量无效

Java for循环中的增量无效,java,Java,我有这个密码 public class CountHi { static public void main(String[] args) { String s1 = "abc.xyz"; System.out.println(s1.length()); System.out.println(xyzThere(s1)); } public static boolean xyzThere(String str) {

我有这个密码

public class CountHi {
    static public void main(String[] args) {
        String s1 = "abc.xyz";
        System.out.println(s1.length());
        System.out.println(xyzThere(s1));
    }
    public static boolean xyzThere(String str) {
        if (str.length() > 3)
        {
            for (int i = 0; i < str.length() - 3; i++) {
                System.out.println(str.substring(i, i + 4));
                if (str.substring(i, i + 4).equals(".xyz"))
                {
                    return false;
                } else {
                    return true;
                }
            }
        }
        return false;
    }
}

我在过去一个小时左右一直在搜索,但找不到I++变成死代码的可能原因。事实上,我是编程和java新手,所以请帮助我。谢谢。

因为您将在for循环的第一次迭代中返回,所以i++部分将永远不会执行

for(int i = 0; i < str.length()-3;i++) {
    System.out.println(str.substring(i,i+4));

    if(str.substring(i,i+4).equals(".xyz")) {
        return false;

    } else {
        return true;
    }
}
或者,如果您只是想测试,如果您的字符串包含.xyz,则只需使用Stringcontains方法:


在循环过程中,如果条件ifstr.substringi,i+4.equals.xyz满足或不满足,它将在任何情况下从循环返回。i++永远不会执行。

您需要保持

        System.out.println(str.substring(i,i+4));
在{}

中,您的if循环总是会退出函数,因为返回

您应该使用一个布尔变量,并将返回值放在方法的末尾

声明一个全局变量:

boolean result = false;
然后在yout if循环中使用它:

            if (str.substring(i, i + 4).equals(".xyz"))
            {
                result = false;
            } else {
                result true;
            }
在方法末尾添加返回值:

return result;

也许您已经知道,您可以使用str.contains.xyz来实现相同的目标。为什么说它是死代码?它在IDE中显示了吗?你从哪里知道你的代码只执行一次。所以它没有执行i++@Rohit..实际上我正在学习阶段&试图解决这个问题,如果给定的字符串包含一个xyz的外观,其中xyz不直接前面有一个句点,则返回true。。所以xxyz计数,但x.xyz不计数@高拉夫。然后可以直接执行-s1.contains.xyz;。那很好。如果你有一些更动态的部分,那么你可能需要一个正则表达式。
            if (str.substring(i, i + 4).equals(".xyz"))
            {
                result = false;
            } else {
                result true;
            }
return result;