【发布时间】:2016-10-01 09:00:17
【问题描述】:
我正在做一个编码问题,我尝试解密输入字符串。解密过程如下: 从 0 到 9 它代表从 a 到 i 的字母。 那么10#代表j,11#代表k等等。
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。任何人都可以帮助我并解释这个概念吗?如果有人有更好的解决方案,请指导。
【问题讨论】:
-
请格式化您的代码并发布minimal reproducible example
-
注意:
hs.put("26",'x');可能是错误的,应该是hs.put("26",'z');?
标签: java string collections stringbuilder