我有这样的代码在地图键用绳子从地图值替换字符串
import java.util.*;
public class Tester {
public static void main(String[] args) {
HashMap<String, String> data=new HashMap();
data.put("Chance to Avoid Fire Damage when Hit", "(3-7)%");
data.put("Chance to Avoid Cold Damage when Hit", "(6-8)%");
data.put("Chance to Avoid Chaos Damage when Hit", "(6-7)%");
data.put("Adds # to # Fire Damage to Spells", "{\"min\":10,\"avg\":20,\"max\":30}");
data.put("Adds # to # Cold Damage to Curses", "{\"avg\":20,\"max\":30,\"min\":10}");
data.put("Adds # to # Cold Damage to Curses", "{\"avg\":30,\"max\":20,\"min\":40}");
data.put("Adds # to # Physical Damage to Weapon", "{\"min\":8,\"max\":32,\"avg\":20}");
data.put("Curse Enemies with Vulnerability on level", "30");
}
}
我们老师要求我们做的方法,将取代每个第一“#”与他的最小值,第二个“#”最大值为 ex:“对法术增加10到30点火焰伤害......” 我一直在做错了几个小时,真的需要一些帮助 这就是我迄今为止所做的(我知道它可能不好):
public class Exe2 {
public static String replaceH(Map<String, String> mods) {
Set<String> modss = new HashSet();
String z="";
String[] keys = mods.keySet().toArray(new String[0]);
String key = mods.get(keys);
for (String n : keys) {
if(n.contains("#")){
z= n.replace("#",key.indexOf(5));
}
}
return z;
}
}
会真的很感激你的hel p,谢谢:)
注意的是,现实生活中的解决方案是使用一个更好的数据结构 – Aaron
你不需要'toArray',只需用'键设置( )'直接。 –
你也混淆了你的变量名:你的''key'变量实际上是一个映射项值。而且你对一个索引进行硬编码,如果'#'的位置改变了,这是不正确的。看看'Map.entrySet',我相信它拥有你所需要的几乎所有的一切。你可以从那里拿起它很容易。 –