Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java模式与boolean模式的比较_Java_Arrays_Boolean - Fatal编程技术网

java模式与boolean模式的比较

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

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

     }
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
应该被交换。)