Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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 用于条件反射和字符串匹配_Java_Loops - Fatal编程技术网

Java 用于条件反射和字符串匹配

Java 用于条件反射和字符串匹配,java,loops,Java,Loops,给定两个字符串a和b,返回它们包含相同长度2子字符串的位置数。因此“xxcaazz”和“xxbaaz”产生3,因为“xx”、“aa”和“az”子字符串出现在两个字符串的同一位置 我的代码:为某些输入抛出一个索引outofboundsexception public int stringMatch(String a, String b) { int count=0; for(int i=0;i<a.length()-1;i++){ if(a.ch

给定两个字符串a和b,返回它们包含相同长度2子字符串的位置数。因此
“xxcaazz”
“xxbaaz”
产生3,因为
“xx”
“aa”
“az”
子字符串出现在两个字符串的同一位置

我的代码:为某些输入抛出一个
索引outofboundsexception

public int stringMatch(String a, String b) {
    int count=0;
    for(int i=0;i<a.length()-1;i++){        
       if(a.charAt(i)==b.charAt(i)) 
           if (a.charAt(i+1)==b.charAt(i+1)){
               count +=1;
           }
    }
    return count;

}
public int stringMatch(字符串a、字符串b){
整数计数=0;
对于(int i=0;i

这将避免出现
索引自动边界异常

您可以用另一种方法来检查a和b的长度:

for(int i=1;i < Math.min(a.length(), b.length);i++){        
   if(a.charAt(i-1)==b.charAt(i-1)) 
       if (a.charAt(i)==b.charAt(i)){
           count +=1;
       }
}
for(inti=1;i

这将不会为类似
“a”
的字符串进入循环,因为长度1不小于1,它将循环限制为最短的字符串。

或使用
int minLength=Math.min(a.length,b.length)
,并使用
i
。for循环不应该是
i@iskandarchacra否,因为循环体使用
a.charAt(i+1)
for(int i=0;i<a.length()-1 && i<b.length()-1;i++)
for(int i=1;i < Math.min(a.length(), b.length);i++){        
   if(a.charAt(i-1)==b.charAt(i-1)) 
       if (a.charAt(i)==b.charAt(i)){
           count +=1;
       }
}