当我运行程序时,它会继续运行并且控制台处于活动状态以进行输入,因此我必须停止。这是为什么? (任务是在句子中找到镜像词。使用INTELLIJ IDEA)。
public class Blinov11 {
static String mirror(String str){
String mirrored = "";
for (int i = str.length() - 1; i >= 0; i--) {
mirrored += str.charAt(i);
}
return mirrored;
}
public static void main(String[] args) {
String text = new String("If the method atad fi takes data a sekat takes primitive data type as an argument, then the nhet String object representing the primitive data type value is return.");
Pattern pattern = Pattern.compile("\\W\\w+\\W",Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(text);
String word = "";
while(matcher.find()){
word = mirror(matcher.group());
if(text.contains(word)){
System.out.println(word);
}
matcher.reset();
}
}
}
答案 0 :(得分:3)
这是因为您正在致电:
matcher.reset();
在while loop
内。根据{{3}}:
public Matcher reset()
重置此匹配器。 重置匹配器 丢弃其所有显式状态信息并设置其附加 位置为零。匹配器的区域设置为默认区域, 这是它的整个字符序列。锚定和透明度 这个匹配器的区域边界不受影响。
由于reset()
循环中的while
,匹配器每次都会重置,while (matcher.find())
变为无限循环,因为它总是从起始位置找到。