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