PTA (简单图书查询应用)

it2025-04-17  3

简单图书查询应用。

先定义Book类,Book类中包含 属性 int price, String name; 方法 setPrice(int c) int getPrice() public void setName(String n) public String getName(), 构建图书表如下:名称,价格 “Java基础教程”, 29 “XML基础教程”, 21 “JSP基础教程”,22 “C++基础教程”,29 “J2ME编程”, 34 “操作系统”, 32 “数据库技术”,29 现输入,一新书名称,价格 找出已有书表中价格相同的图书列表。(提示:先排序、后查找)。

输入样例: C语言 18

输出样例: 没有价钱相同的书

输入样例: Java与模式 29

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

新书:Java与模式(29)与下列图书: C++基础教程(29) Java基础教程(29) 数据库技术(29) 价钱相同

思路

这道题不仅仅可以按照题目的要求建立一个类,然后将每一本书都存起来排序然后去对比。也可以利用TreeMap这种自动带有排序的容器做,建立一个String -> Integer的树形映射。然后去遍历容器一样可以找到满足条件的书。TreeSet和TreeMap容器底层实现都是红黑树默认情况下升序。

import java.util.Map; import java.util.Scanner; import java.util.TreeMap; public class Main { public static void main(String[] args) { Scanner cin = new Scanner(System.in); TreeMap<String,Integer> m = new TreeMap<>(); m.put("Java基础教程",29); m.put("XML基础教程", 21); m.put("JSP基础教程",22); m.put("C++基础教程",29); m.put("J2ME编程", 34); m.put("操作系统", 32); m.put("数据库技术",29); String s = cin.next(); int p = cin.nextInt(); boolean f = true; int cnt = 0; for(Map.Entry<String,Integer> entry: m.entrySet()) { if(entry.getValue() == p){ f = false; if(cnt == 0){ System.out.printf("新书:%s(%d)与下列图书:\n",s,p); cnt++; } System.out.printf("%s(%d)\n",entry.getKey(),entry.getValue()); } } if(f){ System.out.println("没有价钱相同的书"); } else{ System.out.println("价钱相同"); } } }
最新回复(0)