java模式与boolean模式的比较
我的代码有一个问题,我的任务是比较模式和字符。不知何故,它在这里返回true而不是false。 谢谢你的帮助java模式与boolean模式的比较,java,arrays,boolean,Java,Arrays,Boolean,我的代码有一个问题,我的任务是比较模式和字符。不知何故,它在这里返回true而不是false。 谢谢你的帮助 public static void main(String[] args){ char[] chars = {'a','b','c','d','e','f'}; char[] patterns = {'x','y','z'}; System.out.println(containsPattern(chars,patterns));} public static
public static void main(String[] args){
char[] chars = {'a','b','c','d','e','f'};
char[] patterns = {'x','y','z'};
System.out.println(containsPattern(chars,patterns));}
public static boolean containsPattern(char[] chars, char[] patterns){
for (int a=0; a<chars.length; a++){
if (chars[a]==patterns[a] || chars !=null &&
patterns.equals(chars));
return true;
}
return false;
}
publicstaticvoidmain(字符串[]args){
char[]chars={'a','b','c','d','e','f'};
char[]模式={'x','y','z'};
System.out.println(containsPattern(字符、模式));}
公共静态布尔containsPattern(char[]chars,char[]patterns){
for(int a=0;a分号。if后面有一个分号,因此如果语句为true,则该分号将被视为要执行的表达式。因为没有括号,if的主体中只有一个表达式。始终会执行“返回true”
另外,.equals在这里不起作用,它不比较两个数组的内容,只比较内存地址。只有在chars=patterns;
或patterns=chars;
另外,现在您只需检查单个字符:您需要检查三个(模式长度)连续字符以确保模式正确。我假设您只希望在有xyz n个字符时返回true,例如{a,b,x,y,z,c)。
所以,你需要这样做
for(int i = 0; i < chars.length; i++){
boolean matches = true;
for(int j = 0; j < pattern.length; j++){
if((i+j) >= chars.length || chars[i+j] != pattern[j]){
matches = false;
return;
}
}
if(matches)
return true;
}
return false;
for(int i=0;i=chars.length | | chars[i+j]!=pattern[j]){
匹配=假;
返回;
}
}
如果(匹配)
返回true;
}
返回false;
if()的末尾有一个分号。
此外,当您删除;
时,您会得到一个ArrayIndexOutOfBoundsException
。条件chars!=null&&patterns.equals(chars)
应该移到循环之外。(显然,equals
应该被交换。)