Если задать такой текст
Это стоит 1 бакс, а вот это - 12 .
Переменная имеет имя file1.
110 - это число.
1? 2. 3,
ответ будет
Это стоит один бакс, а вот это - двенадцать .
Переменная имеет имя file1.
110 - это число.
1? два. три,
причем, если перенести "1" на предыдущую строку - все отработает как должно.
Понятия не имею как исправить.package com.javarush.task.task19.task1924;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
/*
Замена чисел
*/
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 Exception{
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
FileReader fr = new FileReader(bf.readLine());
bf.close();
String text="";
while(fr.ready()){
text=text+(char)fr.read();
} fr.close();
String[] texts= text.trim().split(" ");
String z;
String result="";
String comma="";
for(String s:texts){
if (s.matches("\\w+[\\,\\.\\!\\?]")) {comma=s.substring(s.length()-1,s.length()) ;
z=s.substring(0,s.length()-1);
s=z;
//System.out.println(z);
// System.out.println(comma);
try{
if (map.containsKey(Integer.parseInt(s))) z= map.get(Integer.parseInt(s));}
catch (Exception e){}
result=result+z+comma+" ";}
else{z=s;
//System.out.println(z);System.out.println(comma);
try{
if (map.containsKey(Integer.parseInt(s))) z= map.get(Integer.parseInt(s));}
catch (Exception e){}
result=result+z+" ";}}
System.out.println(result.substring(0,result.length()-1));
}
}