日期类和集合类的综合应用问题(java实训)

题目:

在实际项目开发中需要存储各种类型的对象数据,一般使用数组存储存在存储个数不确定问题,通常使用集合类型来存储。给你的问题是,在图书信息系统中一个出版社和图书信息,一个出版社发行多门图书,每图书属于一个出版社,在图书查询中往往需要进行某图书属于那个出版社,该出版社在发行某图书的当年发行了多少图书等相关查询,如果使用集合合理存储了出版社和图书对象,进行相关查询将变得容易。
本问题使用标准输入出版社和图书信息,然后查出某图书的出版社,以及该出版社在该图书出版当年发行图书的种类数目。
输入:

标准输入,输入的第一行为两个正整数N、M,N表示接下来的N行为出版社信息,每行由出版社编号、出版社名称、出版社地址,数据之间为一个逗号",“分隔;出版社信息后M行为图书信息,图书可能有重复,图书信息的每行依次为图书ISBN、出版社编号、图书名称、出版日期、图书价格构成,数据之间为一个逗号”,"分格。图书数据之后的所有行为图书ISBN数据,需要你完成查找的图书,每个图书查找信息使用一行输出。
输出:

标准输出,根据需要你查找图书ISBN使用一行输出该图书所在的出版社编号和该出版社该图书发行年发行的图书种类数目;如果该图书不存在,输出"No Book"。

输入样列:

6 22
81070,中国矿业大学出版社,徐州
75605,西安交通大学出版社,西安市兴庆南路10号
302,清华大学出版社,清华大学学研楼A座608室
313,上海交通大学出版社,上海市徐汇区番禺路951号
301,北京大学出版社,北京市海淀区成府路205号
5635,北京邮电大学出版社,北京市海淀区西土城路10号
9787302595021,302,土力学(第3版),2022年10月1日,75.00
9787302611509,302,人工智能安全,2022年10月1日,59.00
9787302597810,302,创业风险管理:开公司必知的128个实操陷阱,2022年7月1日,88.00
9787563547630,5635,Oracle数据库应用与实训教程,2021年7月9日,32.00
9787563542208,5635,单片机原理及接口技术实验教程,2021年7月10日,28.00
9787563537488,5635,动画分镜头设计,2022年7月18日,42.00
9787563542505,5635,Java面向对象程序设计(第4版)(含习题解答与实验),2022年7月19日,46.00
9787563542475,5635,C语言程序设计,2022年7月26日,34.00
9787563546497,5635,C语言程序设计实验指导,2022年7月27日,25.00
978-7-313-22794-2,75605,中国对日战犯审判档案集成(全102卷),2020年9月1日,61200.00
978-7-313-11811-0,75605,进化医学引论,2014年10月8日,48.00
978-7-313-10821-0,75605,平台企业管理:打造最具魅力的企业,2014年3月5日,38.00
7-313-02472-X/TB.053,75605,产品设计,2006年1月1日,25.00
7-313-036438,75605,电子技术实习教程,2004年3月21日,20.00
9787313033185,75605,网页开发技术ASP实践教程,2003年4月10日,34.50
9787313033239,75605,大学英语听力考前冲刺(六级 配音带),2003年3月20日,20.00
978-7-301-31257-5,301,1848年欧洲革命,2021年8月19日,49.00
978-7-301-32258-1,301,人工智能哲学十五讲,2021年7月1日,65.00
978-7-301-32044-0,301,一个村庄的奋斗 : 1965—2020中华民族伟大复兴的乡村基础,2021年5月31日,98.00
978-7-301-32040-2,301,批判性思维与写作,2021年4月12日,32.00
978-7-301-32044-0,301,一个村庄的奋斗 : 1965—2020中华民族伟大复兴的乡村基础,2021年5月31日,98.00
978-7-301-31257-5,301,1848年欧洲革命,2021年8月19日,49.00
9787313033185
978-7-301-31051-6
978-7-301-32258-1

输出样列:

75605 2
No Book
301 4

代码:

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class Xingyuxingxi {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int x = sc.nextInt();
        int y = sc.nextInt();
        sc.nextLine();
        Map<String,Integer> cnt=new HashMap<String,Integer>();
        Map<String,String> sdbhnf=new HashMap<String,String>();
        for (int i = 0; i < x; i ++) {
            String str = sc.nextLine();
        }
        for (int i = 0; i < y; i ++) {
            String[] s = sc.nextLine().split(",");//以","分开字符串
            if (sdbhnf.get(s[0]) != null) continue;//如果时重复的则跳过
            String time = s[3].substring(0, 4);//取出前4个字符为年份
            String bhnf = s[1] + time;//将出版社编号和年份合并
            sdbhnf.put(s[0], bhnf);
            if (cnt.get(bhnf) == null) {//第一次出现赋值为1
                cnt.put(bhnf, 1);
            } else {//以后每次加1统计出现数目
                cnt.put(bhnf, cnt.get(bhnf) + 1);
            }
        }
        while (sc.hasNextLine()) {
            String str = sc.nextLine();
            String bhnf = sdbhnf.get(str);
            if(bhnf == null) {
                System.out.println("No Book");
            }
            else System.out.println(bhnf.substring(0, bhnf.length() - 4) + " " + cnt.get(bhnf));
        }
    }
}

  • 23
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星与星熙.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值