java 与布尔值的模式比较

java pattern comparison with boolean

我的代码有问题,我的任务是比较模式和字符。不知何故它 returns 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;

     }

分号。 if 后面有一个分号,因此如果语句为真,则将其视为要执行的表达式。因为没有括号,所以 if 的主体中只有一个表达式。 "return true" 将始终完成。

另外,.equals在这里不起作用,它不比较两个数组的内容,只比较内存地址。如果你在某处说 chars = patterns;patterns = chars;

,它只会 return 为真

而且,现在您只需检查单个字符:您需要检查三个(模式长度)连续字符以确保模式正确。我假设你只想 return true 当有 xyz n 你字符时,例如 {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;