2 回答
TA贡献1863条经验 获得超2个赞
map<Character,Integer> enc = new map<Character,Integer>();
Map是 Java 中的一种接口类型,不能被实例化[作为匿名内部类以外的任何东西]。您需要实例化实现的类型之一Map,例如TreeMapor HashMap。
//Since Java 7, <> infers the type arguments
Map<Character, Integer> enc = new HashMap<>();
enc[input.charAt(i)] = i;
您使用的括号运算符语法 ( enc[input.charAt(i)]) 是 C++ 原生的,在 Java 中不可重载;因此,Java 中唯一允许使用此类括号的情况是在使用数组时。
您需要使用get()和put()配合 java 地图。
enc.put(input.charAt(i), i);
//...
int pos = enc.get(msg.charAt(i) - 32);
TA贡献1998条经验 获得超6个赞
老问题,但供将来参考,这里是解决方案:
String plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
public static String ABC(String msg, String input)
{
// Hold the position of every character (A-Z) from encoded string
Map<Character, Integer> enc = new HashMap<>();
for (int i = 0; i < input.length(); i++)
{
des.put(input.charAt(i), i);
}
String decipher = "";
// This loop deciphered the message.
// Spaces, special characters and numbers remain same.
for (int i = 0; i < msg.length(); i++)
{
if (msg.charAt(i) >= 'a' && msg.charAt(i) <= 'z')
{
int pos = enc.get((char)(msg.charAt(i)-32));
decipher += plaintext.charAt(pos);
}
else if (msg.charAt(i) >= 'A' && msg.charAt(i) <= 'Z')
{
int pos = enc.get(mensaje.charAt(i));
decipher += plaintext.charAt(pos);
}
else
{
decipher += msg.charAt(i);
}
}
return decipher;
}
基本上你必须put在映射时使用,然后get在使用时使用它。哦,从 char 中减去它。
添加回答
举报
