7-3 学术会议地点统计问题-hebust (20 分)

该代码实现了一个统计两位教授参加学术会议地点及住宿天数的程序。输入包含两位教授的会议详情,输出为他们共同去过且住宿天数较长的城市。通过遍历并比较两位教授的会议地点,生成了按字母升序排列的共同城市及其对应天数。在给定的输入样例中,输出为'z:bj6,w:wh4',表明他们在北京和武汉的住宿天数分别是6天和4天。
摘要由CSDN通过智能技术生成

7-3 学术会议地点统计问题-hebust (20 分)

学术会议地点统计问题

秘书统计张教授【以后简称 z 】和王教授【以后简称 w 】上一年度参加学术会议的情况,教授详细行程清单如下:

z:bj 3,hz 2,qd 4,nj 5,wh 3,bj 3

w:hn 7,xm 6,bj 4,gz 6,wh 4

现在秘书需要完成以下统计工作。 找出两位教授共同去过的城市,并找出住宿天数长的教授,按照如下格式输出:

z:bj 6,w:wh 4

请同学们编写代码帮助搞定。

输入格式:

固定为2行

【数据说明】冒号前面为教授简称,冒号后面为会议详情,分组内使用空格分开,左边为城市地点简称,右边为住宿天数,多个分组之间使用逗号分开【以上字符均为西文】(测试数据经过专门处理,不存在共同去过的城市有相同天数的情况)

输出格式:

固定为1行

由0个或者多个记录组成,记录格式为:

教授简称 冒号 城市简称 空格 天数

多个记录之间使用逗号分开,最后一个记录末尾没有逗号

如果0个记录时,输出 none

【输出顺序说明】输出按照城市地点简称字母升序排序

【输出内容说明】如果没有共同去过的城市,输出为 none 四个字母,两边均无空格

输入样例:

在这里给出一组输入。例如:

z:bj 3,hz 2,qd 4,nj 5,wh 3,bj 3
w:hn 7,xm 6,bj 4,gz 6,wh 4

输出样例:

在这里给出相应的输出。例如:

z:bj 6,w:wh 4

代码

import java.awt.*;
import java.util.*;
import javax.swing.JPanel;

import java.io.*;

public class Main {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		String sz = scan.nextLine();
		String sw = scan.nextLine();
		TreeMap<String, Integer> mapz = new TreeMap<>();
		TreeMap<String, Integer> mapw = new TreeMap<>();
		TreeMap<String, Integer> mapzz = new TreeMap<>();
		TreeMap<String, Integer> mapww = new TreeMap<>();
		sz = sz.substring(2);
		sw = sw.substring(2);
		String[] szz = sz.split(",");
		String[] sww = sw.split(",");
		for (String str : szz) {
			String[] strr = str.split(" ");
			if (mapz.containsKey(strr[0])) {
				mapz.put(strr[0], mapz.get(strr[0]) + Integer.parseInt(strr[1]));
			} else {
				mapz.put(strr[0], Integer.parseInt(strr[1]));
			}

		}

		for (String str : sww) {
			String[] strr = str.split(" ");
			if (mapw.containsKey(strr[0])) {
				mapw.put(strr[0], mapw.get(strr[0]) + Integer.parseInt(strr[1]));
			} else {
				mapw.put(strr[0], Integer.parseInt(strr[1]));
			}
		}
		
		boolean fg = false;
		for (Map.Entry<String, Integer> entry : mapz.entrySet()) {
			if (mapw.containsKey(entry.getKey())) {
				fg = true;
				if (entry.getValue() >= mapw.get(entry.getKey())) {
					mapzz.put(entry.getKey(), entry.getValue());
				} else {
					mapww.put(entry.getKey(), mapw.get(entry.getKey()));
				}
			}
		}
		
		int i = 0;
		int j = 0;
		if (fg) {
			if (mapzz.size() != 0) {
				for (Map.Entry<String, Integer> entry : mapzz.entrySet()) {
					System.out.print("z:");
					System.out.print(entry.getKey() + " " + entry.getValue());
					i++;
					if (i != mapzz.size()) {
						System.out.print(",");
					}
				}
			}
			if (mapzz.size() != 0 && mapww.size() != 0) {
				System.out.print(",");
			}
			if (mapww.size() != 0) {
				for (Map.Entry<String, Integer> entry : mapww.entrySet()) {
					System.out.print("w:");
					System.out.print(entry.getKey() + " " + entry.getValue());
					j++;
					if (j != mapww.size()) {
						System.out.print(",");
					}
				}
			}
		} else {
			System.out.println("none");
		}
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值