我有這樣的代碼在地圖鍵用繩子從地圖值替換字符串
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',我相信它擁有你所需要的幾乎所有的一切。你可以從那裏拿起它很容易。 –