首页 > 编程语言 >液体(java)

液体(java)

时间:2024-10-26 19:20:33浏览次数:3  
标签:Water java name 液体 value volume public

题目描述:

现在有n个物品,每个物品都是液体,液体存在重量和价值,现在要求你只能从如下提供的液体中总共取走10升液体,每种液体每次可以不拿,全拿,或拿一部分,问取走的10升液体的最高价值是多少。请用程序来完成。
名称 重量(升) 总价值
水 4 24
牛奶 8 160
五粮液 2 4000
可乐 6 108
茅台 1 4000
具体功能点的要求如下
1、请按照如上数据的顺序,将每种液体数据依次添加到程序中来(注意:可以创建对象封装每种液体数据,并添加到ArrayList集合中去)
2、请用程序计算出取的10升液体的最高价值是多少?以及10升液体具体是哪些液体组成,各自取了多少。

 分析:

//1.先定义water类,进行封装

//2.定义ArrayList集合,进行添加  使用的是Collections.addAll();

//3.使用的stream()进行排序 list.stream().sorted((o1,o2)->Double.compare(o2.getOnePrice() , o1.getOnePrice())).collect(Collectors.toList())  降序

//4. 先装最贵的

代码:

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;

public class 液体 {
    public static void main(String[] args) {
        //1.定义液体对象
        //2.添加到集合中
        List<Water> list = new ArrayList<>();
        Water water = new Water("水",4,24);
        Water milk = new Water("牛奶",8,160);
        Water five = new Water("五粮液",2,4000);
        Water coke = new Water("可乐",6,108);
        Water maotai = new Water("茅台",1,4000);
        Collections.addAll(list,water,milk,five,coke,maotai);
        list=list.stream().sorted((o1,o2)->Double.compare(o2.getOnePrice() , o1.getOnePrice())).collect(Collectors.toList());
        System.out.println(list);

        //3.遍历集合,计算总价值
        double total = 0;
        int all=10;
        for(Water w:list){
            int volume=w.getVolume();
            if(volume<=all){
                System.out.println(w.getName()+":"+volume);
                total+=volume*w.getOnePrice();
                all-=volume;
            }
            else{
                System.out.println(w.getName()+":"+all);
                total+=all*w.getOnePrice();
                break;
            }
        }
        System.out.println("总价:"+total);

    }
}

import java.math.BigDecimal;
public class Water {
    private String name;
    private int volume;
    private double value;
    public double getOnePrice(){
        BigDecimal value=BigDecimal.valueOf(this.value);
        BigDecimal volume = BigDecimal.valueOf(this.volume);
         return value.divide(volume,2,BigDecimal.ROUND_HALF_UP).doubleValue();
    }

    public Water(String name, int volume, double value) {
        this.name = name;
        this.volume = volume;
        this.value = value;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getVolume() {
        return volume;
    }

    public void setVolume(int volume) {
        this.volume = volume;
    }

    public double getValue() {
        return value;
    }

    public void setValue(double value) {
        this.value = value;
    }
    public String toString(){
        return "商品名称:"+this.name+" 商品价格:"+this.value+" 商品数量:"+this.volume+'\n';
    }
}

标签:Water,java,name,液体,value,volume,public
From: https://blog.csdn.net/m0_75035023/article/details/143243004

相关文章

  • jsp基于java的曲阜市旅游网站t701j--程序+源码+数据库+调试部署+开发环境
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表用户,景点信息,门票购买,房间类型,酒店信息,酒店预订,美食类型,特色美食,人物事迹,旅游攻略,友情链接开题报告内容一、项目背景与意义曲阜市位于中国山东省,是......
  • 22207128-杨衍新-java第一次博客
    目录前言PTA第一次大作业总结PTA第二次大作业总结PTA第三次大作业总结设计与分析PTA第一次大作业的设计与分析PTA第二次大作业的设计与分析PTA第三次大作业的设计与分析采坑心得改进建议总结前言在经历了将近两个月的java这一面向对象编程语言的学习后,我学到了很多......
  • jsp基于Java的民宿客房管理系统6xxr1程序+源码+数据库+调试部署+开发环境
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表会员用户,民宿员工,房间预定,客房类型,热门客房,预约服务,退房结账,近期活动,活动参与,活动评价开题报告内容一、项目背景与意义随着旅游业的蓬勃发展,民宿作为......
  • 大学生HTML期末大作业——HTML+CSS+JavaScript旅游网站(河南)
    HTML+CSS+JS【旅游网站】网页设计期末课程大作业web前端开发技术web课程设计网页规划与设计......
  • 大学生HTML期末大作业——HTML+CSS+JavaScript名侦探柯南
    HTML+CSS+JS【动漫网站】网页设计期末课程大作业web前端开发技术web课程设计网页规划与设计......
  • java - 清单
    java反射机制是什么在运行时动态获取类的信息并操作其成员字段,方法的能力。可以在运行时动态创建对象,访问字段方法,而不需要在编译时确定。......
  • 《大话设计模式》java实现:第二章-策略模式
    《大话设计模式》java实现:第二章-策略模式第二章是使用策略模式实现商场收银系统,使收银系统的促销策略可以灵活更改。1.原始代码实现:packagegof;/**《大话设计模式》第二章策略模式*实现商场收银系统,可以选择不同促销策略*/importjavax.swing.*;importjava.aw......
  • 【源码+论文】Java毕业设计:基于SpringBoot协同过滤算法的汽车推荐网站(Mysql数据库)
    ✅更多源码|课设......
  • gdal部署及java调用详细过程(linux版本-ubuntu)
    建议gdal用3.5.3前的版本,因为目前网上大部分文章都是适用这个版本之前的编译方法一、gdal部署1)安装gcc通过系统包管理器安装sudoaptinstallgccgcc--version2)安装g++通过系统包管理器安装sudoaptinstallg++g++--version3)安装Ant通过系统包管理器安装sudoapt-g......
  • 三高应用的设计原则 java 三高
    高并发负载均衡:通过负载均衡器来分配请求到多个服务器或实例,避免单点过载。异步处理:采用异步非阻塞的方式处理任务,减少等待时间,提高资源利用率。无状态设计:确保服务实例之间无状态依赖,这样任何实例都可以处理任何请求,便于扩展。缓存策略:合理利用缓存减少数据库访问压力,提高......