2016-03-10 3 views
0

Я хочу заменить мою строку специальным символом с помощью hashmap. Но я не могу этого сделать. Как я могу сделать? Пожалуйста, помогите Это мой код ....Заменить строку значением hashmap

public class MyImplement { 

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) { 

     Map<String,Character> inputMap = new HashMap<String,Character>(); 
     inputMap.put("a", '|'); 
     inputMap.put("b", 'β'); 
     inputMap.put("c", '⌐'); 
     inputMap.put("d", '≡'); 
     inputMap.put("e", '╨'); 
     inputMap.put("f", 'Ω'); 
     inputMap.put("g", '╟'); 
     inputMap.put("h", '¬'); 
     inputMap.put("i", '↔'); 
     inputMap.put("j", 'Σ'); 
     inputMap.put("k", '¥'); 
     inputMap.put("l", '╒'); 
     inputMap.put("m", '┼'); 
     inputMap.put("n", '«'); 
     inputMap.put("o", 'Φ'); 
     inputMap.put("p", '╔'); 
     inputMap.put("q", 'Є'); 
     inputMap.put("r", '┴'); 
     inputMap.put("s", 'δ'); 
     inputMap.put("t", '╬');   
     inputMap.put("u", '┤'); 
     inputMap.put("v", 'θ'); 
     inputMap.put("w", '●'); 
     inputMap.put("x", '◙'); 
     inputMap.put("y", 'σ'); 
     inputMap.put("z", '∞'); 


Scanner ins = new Scanner(System.in); 
     System.out.println("Enter a String"); 
     String myData = ins.nextLine(); 

     char arr[]=new char[myData.length()]; 
     arr=myData.toCharArray(); 

     for(int i = 0; i < arr.length; i++) { 

      arr[i]=inputMap.get(arr[i]); 

      System.out.println(arr[i]); 
     } 

    } 

Например ... если я ввести строку .... поп он покажет, как ... ╔Φ╔

Как я могу это сделать?

ответ

1

Проблема здесь состоит в том, что ваша карта создается как

new HashMap<String, Character>(); 

Таким образом, в этом случае ключ является строкой, и персонаж будет возвращен.

Посмотрите на свой код еще раз:

char arr[]=new char[myData.length()]; 
    arr=myData.toCharArray(); 

    for(int i = 0; i < arr.length; i++) { 

     arr[i]=inputMap.get(arr[i]); 

     System.out.println(arr[i]); 
    } 

Ваш массив обр содержит символы, NOT Strings. Итак, когда вы получите от входной карты, у вас будут некоторые ошибки компиляции, потому что char не является строкой. Вместо этого вы должны объявить свою карту как

new HashMap<Character, Character>(); 
Смежные вопросы