我的代码遇到了问题,我的任务是将模式与字符进行比较。不知怎的,它在这里返回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 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;
}
答案 0 :(得分:0)
分号。在if之后有一个分号,因此如果该语句为真,则将其作为表达式。因为你没有括号,所以在if体中只有一个表达式。 &#34;返回true&#34;将永远完成。
此外,.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;