编程题:
把一个多个复数组成的字符串,比如”2+3i,4-5i,2+8i” 把其中所有的复数取出来放到一个map中去,实部作为key,虚部作为value,比如上面的字符串得到的map中包含的值为(2,3)(4,-5)(2,8)。
------文科生工作几年转行学开发表示伤不起求指导~
把一个多个复数组成的字符串,比如”2+3i,4-5i,2+8i” 把其中所有的复数取出来放到一个map中去,实部作为key,虚部作为value,比如上面的字符串得到的map中包含的值为(2,3)(4,-5)(2,8)。
------文科生工作几年转行学开发表示伤不起求指导~
String srcStr = "2231+3123i,4-5i,2+8i";
Map<Integer,Integer> maps = new HashMap<Integer,Integer>();
String[] arr = srcStr.split(",");
for(int i =0;i<arr.length;i++){
Pattern p = Pattern.compile("(\\d+)|([+-]\\d+)");
Matcher m = p.matcher(arr[i]);
int key = 0;
int value=0;
boolean flag = true;
while(m.find()){
String res = m.group();
if(flag){
key = Parse(res);
}else{
value = Parse(res);
}
flag = !flag;
}
maps.put(key, value);
}
Set sets = maps.entrySet();
for(Iterator it = sets.iterator();it.hasNext();){
Entry<Integer, Integer> entry=(Entry<Integer, Integer>) it.next();
System.out.println(entry.getKey()+" "+entry.getValue());
}
}
public static Integer Parse(String src){
if(src.charAt(0)=='+'){
return Integer.parseInt(src.substring(1));
}else{
return Integer.parseInt(src);
}
}