I have a program that converts Cyrillic to Latin. I want to translate the word "computer" into Latin. He has to give out - kompıýter, and why he converts like this with a soft sign - kompııter. In Latin, there is no soft sign. How can I fix the error

here is my code

import java.io.*; import java.nio.charset.StandardCharsets; import java.util.*; public class Main { public static void main(String[] args) throws IOException { final String DEFAULT_ENCODING = "utf-8"; if(args.length < 2 || args.length > 3) { System.out.println("Неверное количество аргументов"); System.exit(1); } String inputFilePath = args[0]; String outputFilePath = args[1]; String fileEncoding = args.length == 2 ? DEFAULT_ENCODING : args[2]; BufferedReader in = new BufferedReader( new InputStreamReader(new FileInputStream(inputFilePath), fileEncoding)); File file = new File(outputFilePath); FileOutputStream fileOutputStream = new FileOutputStream(file, false); Writer writer = new OutputStreamWriter(fileOutputStream, StandardCharsets.UTF_8); String line; StringBuilder result = new StringBuilder(); Map<String, String> dictionary = new Dictionary().getDictionary(); while ((line = in.readLine()) != null) { String outLine = convertString(line, dictionary) + System.getProperty("line.separator"); System.out.println(line); System.out.println(outLine); result.append(outLine) ; } writer.write(result.toString()); in.close(); writer.flush(); writer.close(); } public static String convertString(String str, Map<String, String> dictionary) { char[] chars = str.toCharArray(); StringBuilder stringBuilder = new StringBuilder(); for (int i = 0; i < chars.length; i++) { if (dictionary.containsKey(Character.toString(chars[i]))) { stringBuilder.append(dictionary.get(Character.toString(chars[i]))); continue; } stringBuilder.append(chars[i]); } return stringBuilder.toString(); } } class Dictionary { private Map<String, String> dictionary; public Dictionary() { dictionary = new HashMap<>(); dictionary = new HashMap<>(); dictionary.put("а", "a"); dictionary.put("А", "A"); dictionary.put("ә", "á"); dictionary.put("Ә", "Á"); dictionary.put("б", "b"); dictionary.put("Б", "B"); dictionary.put("д", "d"); dictionary.put("Д", "D"); dictionary.put("е", "e"); dictionary.put("E", "E"); dictionary.put("ф", "f"); dictionary.put("Ф", "F"); dictionary.put("г", "g"); dictionary.put("Г", "G"); dictionary.put("ғ", "ǵ"); dictionary.put("Ғ", "Ǵ"); dictionary.put("х", "h"); dictionary.put("Х", "H"); dictionary.put("һ", "һ"); dictionary.put("Һ", "Һ"); dictionary.put("і", "і"); dictionary.put("І", "I"); dictionary.put("и", "ı"); dictionary.put("И", "I"); dictionary.put("й", "ı"); dictionary.put("Й", "I"); dictionary.put("ж", "j"); dictionary.put("Ж", "J"); dictionary.put("к", "k"); dictionary.put("К", "К"); dictionary.put("л", "l"); dictionary.put("Л", "L"); dictionary.put("м", "m"); dictionary.put("М", "M"); dictionary.put("н", "n"); dictionary.put("Н", "N"); dictionary.put("ң", "ń"); dictionary.put("Ң", "Ń"); dictionary.put("о", "o"); dictionary.put("О", "O"); dictionary.put("ө", "ó"); dictionary.put("Ө", "Ó"); dictionary.put("п", "p"); dictionary.put("П", "P"); dictionary.put("қ", "q"); dictionary.put("Қ", "Q"); dictionary.put("р", "r"); dictionary.put("Р", "R"); dictionary.put("с", "s"); dictionary.put("С", "S"); dictionary.put("ш", "sh"); dictionary.put("Ш", "Sh"); dictionary.put("ч", "ch"); dictionary.put("Ч", "Ch"); dictionary.put("т", "t"); dictionary.put("Т", "T"); dictionary.put("ү", "ú"); dictionary.put("Ү", "Ú"); dictionary.put("ұ", "u"); dictionary.put("Ұ", "U"); dictionary.put("в", "v"); dictionary.put("В", "V"); dictionary.put("ы", "y"); dictionary.put("Ы", "Y"); dictionary.put("у", "ý"); dictionary.put("У", "Ý"); dictionary.put("з", "z"); dictionary.put("З", "Z"); dictionary.put("э", "e"); dictionary.put("Э", "E"); dictionary.put("ю", "ıý"); dictionary.put("Ю", "Iý"); dictionary.put("я", "ıa"); dictionary.put("Я", "Ia"); } public Map<String, String> getDictionary() { return dictionary; } } 

    1 answer 1

    Add to the dictionary:

     dictionary.put("ь", ""); dictionary.put("Ь", ""); 
    • kompııýter comes out wrong (it turns out two "ı") and you need kompıýetr - Fallen2019
    • one
      @ AdilKabdygazinov, Corrected. In your dictionary, "u" is translated as "ıý". In this case, "ь" just remove. - Andrei Galkin