Java代码实现股票2014 - 2020年月度波动与成交量统计及POM文件提供
以下是一个使用 Java 来解决此问题的示例代码,同时也提供了 `pom.xml` 文件: ```java import org.apache.commons.csv.CSVFormat; import org.apache.commons.csv.CSVRecord; import java.io.FileReader; import java.io.IOException; import java.io.Reader; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; public class StockAnalysis { public static void main(String[] args) { String filePath = "stocks.csv"; Map<String, MonthlyStockData> monthlyDataMap = new HashMap<>(); try (Reader reader = new FileReader(filePath)) { Iterable<CSVRecord> records = CSVFormat.DEFAULT.withHeader().parse(reader); for (CSVRecord record : records) { String tradeDate = record.get("trade_date"); double open = Double.parseDouble(record.get("open")); double high = Double.parseDouble(record.get("high")); double low = Double.parseDouble(record.get("low")); double close = Double.parseDouble(record.get("close")); double amount = Double.parseDouble(record.get("amount")); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM"); String month = sdf.format(sdf.parse(tradeDate)); if (!monthlyDataMap.containsKey(month)) { monthlyDataMap.put(month, new MonthlyStockData()); } MonthlyStockData monthlyData = monthlyDataMap.get(month); monthlyData.updateData(close, amount, high, low); } } catch (IOException | ParseException e) { e.printStackTrace(); } for (Map.Entry<String, MonthlyStockData> entry : monthlyDataMap.entrySet()) { String month = entry.getKey(); MonthlyStockData data = entry.getValue(); System.out.printf("%s %.2f - %.2f %.2f%% %.2f%n", month, data.getLow(), data.getHigh(), data.getVolatility(), data.getTotalAmount()); } } static class MonthlyStockData { private double high; private double low; private double totalAmount; private double totalClose; private int count; public void updateData(double close, double amount, double high, double low) { this.high = Math.max(this.high, high); this.low = Math.min(this.low, low); this.totalAmount += amount; this.totalClose += close; this.count++; } public double getHigh() { return high; } public double getLow() { return low; } public double getAverageClose() { return totalClose / count; } public double getVolatility() { double range = high - low; double average = getAverageClose(); return (range / average) * 100; } public double getTotalAmount() { return totalAmount; } } } ``` `pom.xml` 文件内容如下: ```xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.example</groupId> <artifactId>stock-analysis</artifactId> <version>1.0-SNAPSHOT</version> <dependencies> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-csv</artifactId> <version>1.9</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </build> </project> ``` 上述代码假设 `stocks.csv` 文件中的交易日期格式为 `yyyy-MM-dd` ,并且在实际运行时请根据您的文件路径修改代码中的 `filePath` 变量。 ######[AI写代码神器 | 1052点数解答 | 2024-11-13 14:46:13]
- 批处理文件:依据参数表.xlsx精准修改文件.txt中p、t、s值(GPT | 811点数解答 | 2024-12-05 12:58:37)419
- 用批处理和Python实现“参数表.xlsx”与“文件.txt”数据匹配及修改(讯飞星火 | 531点数解答 | 2024-12-05 13:20:42)391
- 批处理文件:依据参数表.xlsx精准修改文件.txt特定参数值(阿里通义 | 495点数解答 | 2024-12-05 13:22:26)369
- Java 实现复制粘贴功能:打造简易文本复制粘贴程序(GPT | 1497点数解答 | 2024-08-25 09:40:33)438
- Maven POM文件开头元素详解及Spring Boot项目配置规范(DeepSeek | 1912点数解答 | 2026-04-23 16:43:34)20
- 15 列信息揭秘:教职工基本信息数据大起底(字节豆包 | 44点数解答 | 2024-11-21 08:18:34)228
- 15 列信息揭秘:教职工基本信息大公开! (字节豆包 | 15点数解答 | 2024-11-21 08:26:12)224
- 解决数据库“dm.jdbc.driver.dmexception: 数据溢出”问题的全步骤指南(阿里通义 | 598点数解答 | 2024-10-15 15:48:38)337
- 达梦数据库数据溢出问题排查及多维度解决方法(阿里通义 | 403点数解答 | 2024-10-15 15:48:41)1232
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)384
- Python 利用 win32com 库:将 Excel 转换为 A4 横向 PDF 并单独打印首列(字节豆包 | 507点数解答 | 2025-03-10 15:48:12)337
- Java 实现获取 2014 - 12 - 11T12:28:44 + 01:00 格式时间字符串及注意事项 (字节豆包 | 172点数解答 | 2024-12-20 14:16:56)161