当前位置: 首页 > 知识库问答 >
问题:

java - 用Java实现以下问题 最好用算法来实现?

程俊誉
2023-08-05

用java实现以下场景,有100条商品,每个商品的价格0到1000元不等
商品数据:

{ id: 1, productName: '特价商品1', price: 200 },{ id: 2, productName: '特价商品2', price: 400 },{ id: 3, productName: '特价商品3', price: 600 },{ id: 4, productName: '特价商品4', price: 800 },

例如200元 加价之后就是240元 利润是40元

首先把0到300元的商品的加价30%,301到500的加价20%,501到1000元商品的加价10%,
然后0到300元的商品订单有300条,301-500的商品订单有400条,501-1000的商品订单有300条,
最后计算他的总利润有多少,最好写出算法

共有3个答案

赫连华皓
2023-08-05

大概思路是,在 calculateTotalProfit 中,遍历所有商品,并根据价格范围确定对应的利润百分比(30%、20%、或10%)。然后,根据商品的价格和利润百分比计算单个商品的利润,并累加到 totalProfit 变量中。运行最后的时候,返回计算得到的总利润。代码比较简单,注释差不多都解释了,所以不做过多赘述。

import java.util.ArrayList;import java.util.List;class Product {    int id;    String productName;    int price;    public Product(int id, String productName, int price) {        this.id = id;        this.productName = productName;        this.price = price;    }}public class ProfitCalculator {    public static void main(String[] args) {        List<Product> products = new ArrayList<>();        // 添加100条商品数据        // 例如:products.add(new Product(1, "特价商品1", 200));        //      products.add(new Product(2, "特价商品2", 400));        // ...        int totalProfit = calculateTotalProfit(products);        System.out.println("总利润为:" + totalProfit + "元");    }    public static int calculateTotalProfit(List<Product> products) {        int totalProfit = 0;        for (Product product : products) {            int price = product.price;            int profitPercentage;            // 根据价格范围确定利润百分比            if (price <= 300) {                profitPercentage = 30;            } else if (price <= 500) {                profitPercentage = 20;            } else {                profitPercentage = 10;            }            // 计算单个商品的利润            int profit = price * profitPercentage / 100;            totalProfit += profit;        }        return totalProfit;    }}
班玉堂
2023-08-05

你确定这不是什么JAVA课的编程小作业吗..

import java.util.ArrayList;import java.util.List;class Product {    private int id;    private String productName;    private double price;    public Product(int id, String productName, double price) {        this.id = id;        this.productName = productName;        this.price = price;    }    public double calculateProfit() {        double profit = 0;        if (price <= 300) {            profit = price * 0.3;        } else if (price <= 500) {            profit = price * 0.2;        } else if (price <= 1000) {            profit = price * 0.1;        }        return profit;    }}public class Main {    public static void main(String[] args) {        List<Product> products = new ArrayList<>();        products.add(new Product(1, "特价商品1", 200));        products.add(new Product(2, "特价商品2", 400));        products.add(new Product(3, "特价商品3", 600));        products.add(new Product(4, "特价商品4", 800));        int orderCount1 = 300;        int orderCount2 = 400;        int orderCount3 = 300;        double totalProfit = 0;        for (Product product : products) {            double profit = product.calculateProfit();            if (product.getPrice() <= 300) {                totalProfit += profit * orderCount1;            } else if (product.getPrice() <= 500) {                totalProfit += profit * orderCount2;            } else if (product.getPrice() <= 1000) {                totalProfit += profit * orderCount3;            }        }        System.out.println("总利润:" + totalProfit);    }}
轩辕阳焱
2023-08-05

只计算总利润,那么关注每个元素的 price 即可。以下是一段伪代码示意:

CALC(A)    R = 0    N = A.length    for i in 0..N        P = A[i].price        if P <= 300            R += P * 0.3        else if P <= 500            R += P * 0.2        else             R += P * 0.1    return R

若是计算的同时又需要修改,则可以加上这些:

CALC(A)    R = 0    N = A.length    for i in 0..N        P = A[i].price        if P <= 300            R += P * 0.3+           A[i].price *= 1.3        else if P <= 500            R += P * 0.2+           A[i].price *= 1.2        else             R += P * 0.1+           A[i].price *= 1.1;    return R
 类似资料:
  • 我正在寻找一种通用模式来分解一些常见的代码:我需要在具有不同算术属性的类之间实现代数加法和减法。一个典型的例子是可以用秒、小时和分钟表示的间隔,我用一个具有三个int属性的类实现了它。 例如,如果我想减去0秒、0分钟、1小时的周期,减去0秒、30分钟、0小时的周期,我不想获得0秒、-30分钟、1小时的周期。 我需要编码两个时间间隔之间的加减法,有没有通用的模式来编码这个代数?我应该寻找不同的代表吗

  • 本文向大家介绍使用java实现LIS算法,出操队形的问题,包括了使用java实现LIS算法,出操队形的问题的使用技巧和注意事项,需要的朋友参考一下 假设有序列:2,1,3,5,求一个最长上升子序列就是2,3,5或者1,3,5,长度都为3。 LIS算法的思想是: 设存在序列a。 ① 如果只有一个元素,那么最长上升子序列的长度为1; ② 如果有两个元素,那么如果a[1]>a[0],则最长上升子序列的长

  • 问题内容: 我想知道什么是Java哈希算法的最佳和最快实现,尤其是MD5和SHA-2 512(SHA512)或256。我想要一个函数来获取字符串作为参数并返回哈希作为结果。谢谢你 编辑:这是用于将每个URL映射到唯一的哈希。由于MD5在这方面的可靠性不高,因此我对寻找SHA-2算法的最佳和最快实现更感兴趣。请注意,我知道即使SHA-2可能也会为某些URL产生相同的哈希,但是我可以接受。 问题答案:

  • 本文向大家介绍java实现Dijkstra最短路径算法,包括了java实现Dijkstra最短路径算法的使用技巧和注意事项,需要的朋友参考一下 任务描述:在一个无向图中,获取起始节点到所有其他节点的最短路径描述 Dijkstra(迪杰斯特拉)算法是典型的最短路径路由算法,用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。 Dijkstra一般的表述

  • 本文向大家介绍Java实现TopK问题的方法,包括了Java实现TopK问题的方法的使用技巧和注意事项,需要的朋友参考一下 面试中会经常遇到手撕代码的情况,而求TopK的是经常遇到的题目。下面我就用Java来实现。主要通过两种方法实现,快排思想以及堆排序的思想,两者的复杂度为O(NlogK)。 基于快排的TopK实现: 其实整个代码和快排一样,就是多了一个下标位置的判断,if (K - 1 ==

  • 本文向大家介绍java实现最短路径算法之Dijkstra算法,包括了java实现最短路径算法之Dijkstra算法的使用技巧和注意事项,需要的朋友参考一下 前言 Dijkstra算法是最短路径算法中为人熟知的一种,是单起点全路径算法。该算法被称为是“贪心算法”的成功典范。本文接下来将尝试以最通俗的语言来介绍这个伟大的算法,并赋予java实现代码。 一、知识准备: 1、表示图的数据结构 用于存储图的