import java.util.regex.*;
import java.util.*;class ExampleTest {
public static void main(String args[]) {
String s[] = { "boy111", "boy!@#", "boyweo", "boyboyboyboy" };
boolean boo=true;
Pattern p = Pattern.compile("boy\\w{3}");
for (int i = 0; i < s.length; i++) {

Matcher m = p.matcher(s[i]);
while(m.find()){
boo=false;
String str = m.group();
System.out.println(s[i] + "从" + m.start() + "到" + m.end()
+ "匹配模式子序列" + str);
}

if(boo)
System.out.println(s[i]+"没有匹配的字符序列");
}
}
}
为什么if判断条件中的boo没有因为while循环而改为true,不执行啊

解决方案 »

  1.   

    这里"boy111"就符合你的条件,进入了while循环,所以boo=false了而后面boo一直都没有重新给设置成true,所以boo一直都是false也没有进入if的字句了你这里需要改一下把boolean boo=true;加到while的上面也就是
    for (int i = 0; i < s.length; i++) { 
    boolean boo=true;
    Matcher m = p.matcher(s[i]); 
      

  2.   

    运行完一次需要重新将它初始化才保证while循环
      

  3.   

    因为boo是false,所以不会执行那个system语句
      

  4.   

    就像循环体里面每次都可以从新定义一个新对性一样。
    比如:for(int i=0;i<list.size();i++){
        User user = list.get(i);
        System.out.println(user.toString());
    }每次都定义一个user...