用Java语言编写代码,要求批量产生并存储习题(CSV文件格式),加、减、混合题各一套;加一个类ExerciseFiles、在其中增加方法,从CSV格式的文件中读入习题。屏幕显示读到的文件内容。在上述基础上添加运算结果,例如33+22=55,屏幕显示,要求复用算式类;

时间: 2024-02-29 12:53:21 浏览: 13
好的,让我为您提供一份Java代码样例,实现您的需求: BinaryOperation.java ```java public class BinaryOperation { private int operand1; private int operand2; private char operator; public BinaryOperation(int operand1, int operand2, char operator) { this.operand1 = operand1; this.operand2 = operand2; this.operator = operator; } public int calculate() { switch (operator) { case '+': return operand1 + operand2; case '-': return operand1 - operand2; default: throw new IllegalArgumentException("Unsupported operator: " + operator); } } @Override public String toString() { return operand1 + " " + operator + " " + operand2; } } ``` Exercise.java ```java import java.io.FileWriter; import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.Random; public class Exercise { private List<BinaryOperation> operations; public Exercise(int numAdd, int numSubtract, int numMixed) { operations = new ArrayList<BinaryOperation>(); Random rand = new Random(); for (int i = 0; i < numAdd; i++) { int a = rand.nextInt(100); int b = rand.nextInt(100); operations.add(new BinaryOperation(a, b, '+')); } for (int i = 0; i < numSubtract; i++) { int a = rand.nextInt(100); int b = rand.nextInt(100); operations.add(new BinaryOperation(a, b, '-')); } for (int i = 0; i < numMixed; i++) { int a = rand.nextInt(100); int b = rand.nextInt(100); char operator = rand.nextBoolean() ? '+' : '-'; operations.add(new BinaryOperation(a, b, operator)); } } public void saveToFile(String filename) { try (FileWriter writer = new FileWriter(filename)) { for (BinaryOperation op : operations) { writer.write(op.toString() + "\n"); } } catch (IOException e) { e.printStackTrace(); } } public List<BinaryOperation> getOperations() { return operations; } } ``` ExerciseSheet.java ```java import java.io.FileWriter; import java.io.IOException; import java.util.ArrayList; import java.util.List; public class ExerciseSheet { private List<Exercise> exercises; public ExerciseSheet(int numAdd, int numSubtract, int numMixed, int numSheets) { exercises = new ArrayList<Exercise>(); for (int i = 0; i < numSheets; i++) { exercises.add(new Exercise(numAdd, numSubtract, numMixed)); } } public void saveToFile(String prefix) { for (int i = 0; i < exercises.size(); i++) { String filename = prefix + "-" + (i + 1) + ".csv"; exercises.get(i).saveToFile(filename); } } public List<Exercise> getExercises() { return exercises; } } ``` ExerciseFiles.java ```java import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java.util.ArrayList; import java.util.List; public class ExerciseFiles { public static List<BinaryOperation> readFromFile(String filename) { List<BinaryOperation> operations = new ArrayList<BinaryOperation>(); try (BufferedReader reader = new BufferedReader(new FileReader(filename))) { String line; while ((line = reader.readLine()) != null) { String[] parts = line.split("\\s+"); int a = Integer.parseInt(parts[0]); char operator = parts[1].charAt(0); int b = Integer.parseInt(parts[2]); operations.add(new BinaryOperation(a, b, operator)); } } catch (IOException e) { e.printStackTrace(); } return operations; } public static void printOperations(List<BinaryOperation> operations) { for (BinaryOperation op : operations) { int result = op.calculate(); System.out.println(op.toString() + " = " + result); } } } ``` 这份代码样例中,BinaryOperation类表示二元操作,Exercise类表示一组二元操作,ExerciseSheet类表示多组二元操作,ExerciseFiles类表示从文件中读取和显示二元操作。 您可以将这份代码保存为ExerciseDemo.java文件,并执行以下代码: ```java public class ExerciseDemo { public static void main(String[] args) { ExerciseSheet sheet = new ExerciseSheet(10, 10, 10, 3); sheet.saveToFile("exercises"); List<BinaryOperation> operations = ExerciseFiles.readFromFile("exercises-1.csv"); ExerciseFiles.printOperations(operations); } } ``` 这份代码会生成三组加、减、混合题各十道的习题,保存在exercises-1.csv、exercises-2.csv、exercises-3.csv三个文件中,并从exercises-1.csv文件中读取二元操作,并计算并显示结果。

相关推荐

最新推荐

recommend-type

R语言编程基础第三章课后习题操作题.docx

R语言编程基础第三章课后习题操作题
recommend-type

JAVA题库习题及答案--.doc

JAVA题库习题及答案,JAVA题库习题及答案,JAVA期末试卷题库习题及答案,JAVA题库习题及答案
recommend-type

java课后习题 关于 编写一个类

16.编写一个类A,该类创建的对象可以调用方法f 输出英文字母表,然后再编写一个该类的子类B,要求 子类B 必须继承A 类的方法f(不允许重写),子类创建的对象不仅可以调用方法f 输出英文字母表,而 且调用子类新增的...
recommend-type

JAVA类与对象及数组习题

很好的题,希望能给大家一点点帮助。 本文件为“JAVA类与对象及数组习题”是题哦
recommend-type

Java实验报告(包含课后习题).docx

Java实验报告详细代码第1章-第10章(部分课后重点习题),附代码运行截图,实验3:Java流程控制,实验4:Java类与对象,实验5:Java包的使用与访问控制,实验6:Java继承与多态,实验7:Java 抽象类,实验9:数组与...
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

解答下列问题:S—>S;T|T;T—>a 构造任意项目集规范族,构造LR(0)分析表,并分析a;a

对于这个文法,我们可以构造以下项目集规范族: I0: S -> .S S -> .T T -> .a I1: S -> S. [$ T -> T. [$ I2: S -> T. I3: S -> S.;S S -> S.;T T -> T.;a 其中,点(.)表示已经被扫描过的符号,;$表示输入串的结束符号。 根据项目集规范族,我们可以构造出LR(0)分析表: 状态 | a | $ ---- | - | - I0 | s3| I1 | |acc I2 | | 其中s3表示移进到状态3,acc表示接受。在分析字符串a;a时,我们可以按照以下步骤进行
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。