2023/11/9 每日总结
今天完成了软件构造的课后作业
尝试将生成的算式及习题长期保存下来,建议采用CSV形式存储。提交实现效果截图及相关代码。
在昨天代码上进行了升级,实现了将四则运算保存为csv格式
package org.example; public class Equation { private int num1; private int num2; private int answer; private char operator; public int getNum1() { return num1; } public void setNum1(int num1) { this.num1 = num1; } public int getNum2() { return num2; } public void setNum2(int num2) { this.num2 = num2; } public int getAnswer() { return answer; } public void setAnswer(int answer) { this.answer = answer; } public char getOperator() { return operator; } public void setOperator(char operator) { this.operator = operator; } public Boolean isequal(Equation e){ if(this.num1==e.num1&&this.num2==e.num2&&this.operator==e.operator){ return true; }else if (this.num2==e.num1&&this.num1==e.num2&&this.operator==e.operator){ return true; } else{ return false; } } } package org.example; import java.util.ArrayList; import java.util.Random; public class Exercise { private ArrayList<Equation> arrayList= new ArrayList<Equation>(); private int num;//要生成的习题数量 public Exercise(int num) { this.num = num; } public ArrayList<Equation> getArrayList() { return arrayList; } public void setArrayList(ArrayList<Equation> arrayList) { this.arrayList = arrayList; } public int getNum() { return num; } public void setNum(int num) { this.num = num; } public Boolean checkRepeat(Equation equation){ for(Equation e:this.arrayList){ if(e.isequal(equation)){ return true; } } return false; } public void generateAdd() { int n=0;//生成的题数 while(num>n){ Equation equation = new Equation(); Random random = new Random(); equation.setNum1(random.nextInt(100)); equation.setNum2(random.nextInt(100)); equation.setAnswer(equation.getNum1()+equation.getNum2()); equation.setOperator('+'); if (!checkRepeat(equation)){ arrayList.add(equation); n++; } } } public void generateSub() { int n=0;//生成的题数 while(num>n){ Equation equation = new Equation(); Random random = new Random(); equation.setNum1(random.nextInt(100)); equation.setNum2(random.nextInt(100)); equation.setAnswer(equation.getNum1()-equation.getNum2()); equation.setOperator('-'); if (!checkRepeat(equation)){ arrayList.add(equation); n++; } } } public void generateMixed() { int n=0;//生成的题数 while(num>n){ Equation equation = new Equation(); Random random = new Random(); equation.setNum1(random.nextInt(100)); equation.setNum2(random.nextInt(100)); equation.setAnswer(equation.getNum1()-equation.getNum2()); equation.setOperator(random.nextInt(2)==1?'+':'-'); if (!checkRepeat(equation)){ arrayList.add(equation); n++; } } } public void printQuestion(){ //System.out.println(arrayList.size()); for(Equation e:arrayList){ System.out.println(String.valueOf(e.getNum1())+" "+e.getOperator()+" "+String.valueOf(e.getNum2())+" ="); } } } package org.example; import java.io.*; import java.util.ArrayList; public class SaveCsv { private String path="E://homework/exercise.csv"; public String getPath() { return path; } public void setPath(String path) { this.path = path; } public static void main(String[] args) { } public void save(ArrayList<Equation> arrayList){ //第一步:设置输出的文件路径 //如果该目录下不存在该文件,则文件会被创建到指定目录下。如果该目录有同名文件,那么该文件将被覆盖。 File writeFile = new File(path); try{ //第二步:通过BufferedReader类创建一个使用默认大小输出缓冲区的缓冲字符输出流 BufferedWriter writeText = new BufferedWriter(new FileWriter(writeFile)); //第三步:将文档的下一行数据赋值给lineData,并判断是否为空,若不为空则输出 writeText.write("算试"); for(Equation equation:arrayList){ writeText.newLine(); writeText.write(equation.getNum1()+"+"+equation.getNum2());//换行 } //使用缓冲区的刷新方法将数据刷到目的地中 writeText.flush(); //关闭缓冲区,缓冲区没有调用系统底层资源,真正调用底层资源的是FileWriter对象,缓冲区仅仅是一个提高效率的作用 //因此,此处的close()方法关闭的是被缓存的流对象 writeText.close(); }catch (FileNotFoundException e){ System.out.println("没有找到指定文件"); }catch (IOException e){ System.out.println("文件读写出错"); } } } package org.example; import java.util.Scanner; public class Main { public static void main(String[] args) { System.out.println("请输入生成的运算符 1 + 2 - 3加减混合"); Scanner scanner=new Scanner(System.in); int operator = scanner.nextInt(); System.out.println("请输入生成的题目数"); int num=scanner.nextInt(); Exercise exercise = new Exercise(num); SaveCsv saveCsv = new SaveCsv(); if(operator==1){ exercise.generateAdd(); exercise.printQuestion(); }else if (operator==2){ exercise.generateSub(); exercise.printQuestion(); }else{ exercise.generateMixed(); exercise.printQuestion(); } saveCsv.save(exercise.getArrayList()); System.out.println("结果保存在"+saveCsv.getPath()); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!