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());
    }
}
复制代码

 

posted @   樱花开到我身边  阅读(2)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示