大神高手菜鸟,都来看看了,纠结的题求解咯~!

sunguoshun7031 2012-11-17 05:31:03
编程题:
把一个多个复数组成的字符串,比如”2+3i,4-5i,2+8i” 把其中所有的复数取出来放到一个map中去,实部作为key,虚部作为value,比如上面的字符串得到的map中包含的值为(2,3)(4,-5)(2,8)。


------文科生工作几年转行学开发表示伤不起。。。。。。求指导~
...全文
236 4 打赏 收藏 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
aimsgmiss 2012-11-17
  • 打赏
  • 举报
回复
Map接口的Key值是不允许重复的
Mr_sunboy 2012-11-17
  • 打赏
  • 举报
回复
按照你的要求写了一个,但是用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);
		 }
		 
	}

hbwhwang 2012-11-17
  • 打赏
  • 举报
回复
你的想法是不成立的,MAP里面的KEY是不允许重复的,所以不可能有(2,3)(4,-5)(2,8)的结果。
一起来玩玩呗 2012-11-17
  • 打赏
  • 举报
回复
先读取,再一个个put就可以了

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧