编程题:
把一个多个复数组成的字符串,比如”2+3i,4-5i,2+8i” 把其中所有的复数取出来放到一个map中去,实部作为key,虚部作为value,比如上面的字符串得到的map中包含的值为(2,3)(4,-5)(2,8)。
------文科生工作几年转行学开发表示伤不起求指导~

解决方案 »

  1.   

    先读取,再一个个put就可以了
      

  2.   

    你的想法是不成立的,MAP里面的KEY是不允许重复的,所以不可能有(2,3)(4,-5)(2,8)的结果。
      

  3.   

    按照你的要求写了一个,但是用map的话key是不能重复的..下面代码还需要改进,你慢慢改吧public static void main(String[] args) {

    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);
     }
     
    }
      

  4.   

    Map接口的Key值是不允许重复的