Java-华为真题-预定酒店

需求:

复制代码
   放暑假了,小王决定到某旅游景点游玩,他在网上搜索到了各种价位的酒店(长度为n的数组A),他的心理价位是x元,请帮他筛选出k个最接近x元的酒店(n>=k>0),并由低到高打印酒店的价格。
复制代码
 1)酒店价格数组A和小王的心理价位x均为整型数据;(0 < n,k,x < 10000)
复制代码
 2)优先选择价格最接近心理价位的酒店;若两家酒店和心理价位差价相同,则选择价格较低的酒店。(比如100元和300元距离心理价位200元同样接近,此时选择100元);
复制代码
3)酒店价格可能相同重复。
复制代码
输入描述:
  第一行:n, k, x
  第二行:A[0] A[1] A[2]…A[n-1]

输出描述:
  由低到高打印筛选出的酒店价格

编码:

java 复制代码
public class ReservationHotel {
    public static void main(String[] args) {
        //使用useDelimiter()方法,输入一起输入
        Scanner sc = new Scanner(System.in).useDelimiter("\\D");
        System.out.print("请输入:");
        int count=sc.nextInt();
        int number=sc.nextInt();
        int money=sc.nextInt();
        //调用方法
        show(count,number,money,sc);
    }

    /**
     *
     * @param count 数组长度
     * @param number 筛选个数
     * @param money 目标价位
     */
    public static void show(int count,int number,int money, Scanner sc ){
       //(1)集合存放各个酒店价格数据
        List<Integer> hotelPriceList = new ArrayList<>();
        System.out.print("请输入"+count+"个酒店价格:");
        for (int i = 0; i <count ; i++) {
            hotelPriceList.add(sc.nextInt());
        }
       // (2)根据酒店价格从低到高排序
        Collections.sort(hotelPriceList,(o1, o2) -> {
            //心理价位差价
            int dif1=Math.abs(o1-money);
            int dif2=Math.abs(o2-money);
//            比较不等
            if (dif1!=dif2){
                return Integer.compare(dif1,dif2);
            }else{
                return  Integer.compare(o1,o2);
            }
        });

        System.out.println("进行比较后的酒店价格:"+hotelPriceList.toString());

        //(3)将集合存放各个筛选出number个最接近money元的酒店
        List<Integer> findPriceList = new ArrayList<>();
        for (int i = 0; i <number ; i++) {
            findPriceList.add(hotelPriceList.get(i)); //获取酒店筛选出数据
        }

        //(4)再按酒店价格从低到高排序
        Collections.sort(findPriceList);

        System.out.println("筛选出最接目标价位"+money+"元的酒店:"+findPriceList.toString());
    }
}

效果:

相关推荐
数据智能老司机2 分钟前
探索Java 全新的线程模型——结构化并发
java·性能优化·架构
数据智能老司机2 分钟前
探索Java 全新的线程模型——作用域值
java·性能优化·架构
数据智能老司机4 分钟前
探索Java 全新的线程模型——并发模式
java·性能优化·架构
何中应8 分钟前
分布式事务的两种解决方案
java·分布式·后端
数据智能老司机11 分钟前
探索Java 全新的线程模型——虚拟线程
java·性能优化·架构
老赵的博客38 分钟前
QT的项目pro qmake编译
开发语言·qt
SimonKing1 小时前
无需重启!动态修改日志级别的神技,运维开发都哭了
java·后端·程序员
杨杨杨大侠1 小时前
第3篇:配置管理的艺术 - 让框架更灵活
java·spring·log4j
枯萎穿心攻击1 小时前
从 Unity UGUI 到 Unreal UMG 的交互与高效实践:UI 事件、坐标系适配与性能优化
开发语言·ui·unity·性能优化·ue5·游戏引擎·虚幻引擎
WALL-EC1 小时前
Qt工具栏中图标槽函数没有响应的问题分析
开发语言·qt·osgearth