一个小项目:JavaFx实现50道加减法

前言

太长时间没写博客了,其实这期间学了很多东西,但都是在记笔记没发过博客,这次借着学校的作业学了个新东西javaFx,比swing界面好看很多也方便很多,所以根据这个小项目准备写一篇博客,记录一下初学的javaFx,因为只学了四天,掌握的只是皮毛,所以如果有什么不妥的地方欢迎指正!

项目介绍

要求:java编写小程序,完成随机生成50道一百以内的不重复的加减法,可能需要输出混合运算。

思路:首先要编写习题类,用于生成简单的两个数运算习题;再编写混合运算类继承习题类,用于生成混合的加减法运算习题;由于需要图形界面输出,所以两个类都需要编写打印方法用于打印出习题。
         之后需要编写一个总的类,相当于习题本,包含一个习题数组的属性,这个习题数组既包含简单运算也包含混合运算(混合运算继承于简单运算),在这个类的构造函数中完成对习题的初始化,初始化的过程中检查重复性,由于生成是随机的,所以有几率习题会出现重复的情况,可以在出现重复的时候,在当前位置上重新生成习题。
         在编写GUI的时候选择了javaFx,因为就算是缺省的基本工具样式也很好看,用起来也方便。主要分有四个Pane,一个是根节点Pane,做下面三个Pane的父节点;两个页面Pane,第一页和第二页;一个最右边的输出成绩和页面showPane。
在功能方面需要完成:

  • 分页打印习题,可以上下翻页;
  • 输入框内只能输入数字,输入字符提示错误;
  • 摁下提交按钮后打印成绩和错题集,方便订正;
  • 可以多次提交成绩分别打印错题
  • 加入倒计时功能,督促学生在一定时间内完成习题。

代码

Exercise类:

public class Exercise {
   
    private int left;
    private int right;
    private char operate;
    private int result;
    private Random random = new Random();

    public Exercise(){
   
        left = random.nextInt(101);
        right = random.nextInt(101);
        if(random.nextInt(2) == 0){
   
            operate = '+';
            result = left + right;

        }else {
   
            operate = '-';
            result = left - right;
        }
    }
    public String print(){
   
        return (left+" "+operate+" "+right+ " = ");
    }

    public int getLeft() {
   
        return left;
    }

    public int getRight() {
   
        return right;
    }

    public char getOperate() {
   
        return operate;
    }

    public String getResult() {
   
        String res = Integer.toString(result);
        return res;
    }
}

mixExercise类:

public class mixExercise extends Exercise {
   //随机数个混合运算,混合运算包含的数字在(3,5)之间
    private Random random = new Random();
    private int size;
    private ArrayList<Integer> numList;
    private ArrayList<Character> opList;
    private int result;

    public mixExercise(){
   
        size = random.nextInt(3) + 3;
        numList = new ArrayList<>(size);
        opList = new ArrayList<>(size - 1);

        for(int i = 0; i < size - 1; i++){
   
            numList.add(random.nextInt(101));
            if(random.nextInt(2) == 0)opList.add('+');
            else opList.add('-');
        }
        numList.add(random.nextInt(101));

        result = numList.get(0);
        for(int i = 0; i < opList.size(); i++){
   
            if(opList.get(i) == '+'){
   
                result += numList.get(i + 1);
            }else {
   
                result -= numList.get(i + 1);
            }
        }
    }

    public String print(){
   
        String display = "";

        for(int i = 0; i < opList.size(); i++){
   
            display += numList.get(i);
            display += " " + opList.get(i) + " ";
        }
        display += numList.get(size - 1);
        return display + " = ";
    }

    @Override
    public String getResult() {
   
        String res = Integer.toString(result);
        return res;
    }

}

Operation类:

public class Operation {
   
    public ArrayList<Exercise> exercises;

    public Operation(int num_MixExercise){
   
        exercises = new ArrayList<>(50);
        for(int i = 0; i <= 50 - num_MixExercise;){
   
            Exercise exercise = new Exercise();
            if(!checkTheRepeat(exercise)){
   
                exercises.add(exercise);
                i++;
            
  • 6
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值