java模式与布尔值的比较

时间:2015-11-29 17:17:22

标签: 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 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;

     }

1 个答案:

答案 0 :(得分:0)

分号。在if之后有一个分号,因此如果该语句为真,则将其作为表达式。因为你没有括号,所以在if体中只有一个表达式。 &#34;返回true&#34;将永远完成。

此外,.equals在这里不起作用,它不会比较两个数组的内容,只会比较内存地址。只有当您在某处chars = patterns;patterns = chars;

说某处时,它才会返回true

此外,现在您只是检查单个字符:您需要检查三个(模式长度)连续字符以确保模式正确。我假设你只想在你的字符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;