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;