В чем причина, помогите((
package com.javarush.task.task19.task1924;
import java.io.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/*
Замена чисел
*/
public class Solution {
public static Map<Integer, String> map = new HashMap<Integer, String>();
static {
map.put(0, "ноль");
map.put(1, "один");
map.put(2, "два");
map.put(3, "три");
map.put(4, "четыре");
map.put(5, "пять");
map.put(6, "шесть");
map.put(7, "семь");
map.put(8, "восемь");
map.put(9, "девять");
map.put(10, "десять");
map.put(11, "одиннадцать");
map.put(12, "двенадцать");
}
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String file = reader.readLine();
BufferedReader fileReader = new BufferedReader(new FileReader(file));
String s; //c:\Users\79527\Desktop\test.txt
while ((s = fileReader.readLine()) != null){
s = " " + s + " ";
while (true){
if (s.equals(s = change(s)))
break;
}
System.out.println(s.substring(1, s.length() - 1));
}
reader.close();
fileReader.close();
}
public static String change(String s){
Pattern pattern = Pattern.compile("\\W-?\\d+?\\W");
Matcher matcher = pattern.matcher(s);
int start = 0;
while (matcher.find(start)){
int l = matcher.start(), r = matcher.end();
start = l + 1;
String n = s.substring(l + 1, r - 1);
//System.out.println(n);
int x = Integer.parseInt(n);
if (x >= 0 && x <= 12 && String.valueOf(x).equals(n)){
s = s.substring(0, l + 1) + map.get(x) + s.substring(r - 1);
return s;
}
}
return s;
}
}