用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条,
最后计算他的总利润有多少,最好写出算法
大概思路是,在 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; }}
你确定这不是什么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); }}
只计算总利润,那么关注每个元素的 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、表示图的数据结构 用于存储图的