Java 具有r&;g由5个字符分隔!(错误:字符串索引超出范围错误)
给定一个输入字符串,请检查该字符串的字符“r”和“g”之间的间隔是否正好为5个字符。 对于以下代码,错误为字符串索引超出范围错误。 搞不清楚出了什么问题 我的类代码具有检查模式的函数:Java 具有r&;g由5个字符分隔!(错误:字符串索引超出范围错误),java,regex,string,expression,Java,Regex,String,Expression,给定一个输入字符串,请检查该字符串的字符“r”和“g”之间的间隔是否正好为5个字符。 对于以下代码,错误为字符串索引超出范围错误。 搞不清楚出了什么问题 我的类代码具有检查模式的函数: public class classb { String s = new String(); public int match(String str){ int counter = 0; int j; s=str; for(j=0;j<
public class classb {
String s = new String();
public int match(String str){
int counter = 0;
int j;
s=str;
for(j=0;j<(s.length()-6);j++){
if(s.charAt(j)=='r' && s.charAt(j+6)=='g') {
counter=1;
break;
}
if(s.charAt(j)=='g' && s.charAt(j+6)=='r'){
counter=1;
break;
}
while(s.charAt(j)!='r' || s.charAt(j)!='g'){
if(j<(s.length()-6))
j++;
else
break;
}
}
return counter;
}
}
您可以使用正则表达式来解决这个问题,
r.{5}g
r
表示模式以r
开始,g
表示模式以g
结束。
表示任意字符,{5}
表示正好有5个字符(在本例中为任意字符)
为了实现这一点,您只需使用方法
String#matches(“r.{5}g”)
您可以使用正则表达式来解决这个问题,r.{5}g
r
表示模式以r
开始,g
表示模式以g
结束。
表示任意字符,{5}
表示正好有5个字符(在本例中为任意字符)
要实现这一点,您只需使用方法
String#matches(“r.{5}g”)
代码中的根本问题是:
for(j=0;j<s.length();j++){
while(s.charAt(j)!='r' || s.charAt(j)!='g')
j++;
for(j=0;j代码中的根本问题是:
for(j=0;j<s.length();j++){
while(s.charAt(j)!='r' || s.charAt(j)!='g')
j++;
for(j=0;jI当然可以。但问题还说你不能用直接函数来解决。@AishwaryaR啊,我明白了。在这种情况下,你可以用regex(?=r)拆分字符串
,使r
停留在数组中的每个字符串中,并对其进行迭代,检查第7个字符是否是g
。我当然可以。但问题还说您不能使用直接函数来解决。@AishwaryaR,我明白了。在这种情况下,您可以用正则表达式(?=r)拆分字符串
,使r
停留在数组中的每个字符串中,并对其进行迭代,检查第7个字符是否为g
。是的,绝对正确。完成这些编辑后……但对于上面的代码,即使模式存在,也无法识别。未达到反语句。是的,绝对正确已经完成了这些编辑…但是对于上面的代码,它仍然无法识别模式,即使它存在。未到达计数器语句。