Я делаю один вопрос с кодировкой, в котором я пытаюсь расшифровать входную строку. Процедура дешифрования: от 0 до 9 представляет собой алфавиты от a до i. , тогда 10 # представляют j, 11 # представляют k и так далее.Использование StringBuilder, получающего null как вывод
import java.util.HashMap;
public class Julia {
public static void main(String[] args) {
String s="10#21#12#91";
Julia obj=new Julia();
String result=obj.decrypt(s);
System.out.println(result);
}
public String decrypt(String msg)
{
HashMap<String,Character> hs=new HashMap<>();
hs.put("1",'a');
hs.put("2",'b');
hs.put("3",'c');
hs.put("4",'d');
hs.put("5",'e');
hs.put("6",'f');
hs.put("7",'g');
hs.put("8",'h');
hs.put("9",'i');
hs.put("10",'j');
hs.put("11",'k');
hs.put("12",'l');
hs.put("13",'m');
hs.put("14",'n');
hs.put("15",'o');
hs.put("16",'p');
hs.put("17",'q');
hs.put("18",'r');
hs.put("19",'s');
hs.put("20",'t');
hs.put("21",'u');
hs.put("22",'v');
hs.put("23",'w');
hs.put("24",'x');
hs.put("25",'y');
hs.put("26",'x');
StringBuilder n=new StringBuilder();
for(int i=msg.length()-1;i>=0;i--)
{
if(msg.charAt(i)=='#' && i>=2)
{
StringBuilder s=new StringBuilder().append(msg.charAt(i-2)).append(msg.charAt(i-1));
System.out.println(s);
n.append(hs.get(s));
System.out.println(n);
i=i-2;
}
else
{
n.append(hs.get(msg.charAt(i)));
}
}
return n.toString();
}
}
То есть код, который я написал. Но выход, который я получаю, - nullnullnullnullnull
. Я думаю, что проблема связана с StringBuilder
. Может ли кто-нибудь помочь мне в этом и объяснить концепцию? Если у кого-то есть лучшее решение, пожалуйста, обратитесь к нему.
Отформатируйте свой код и опубликовать [MCVE] – c0der
Примечание: 'hs.put ("26", 'х');', вероятно, неправильно, должно be 'hs.put (" 26 ", 'z');'? – zaph