20165104-Java第一次结对编程练习

Posted 20165104mfb

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了20165104-Java第一次结对编程练习相关的知识,希望对你有一定的参考价值。

Java第一次结对编程练习

  • 学习笔记

  • 中缀表达式转换为后缀表达式

    • 如果遇到数字,我们就直接将其输出。
    • 如果遇到非数字时,若栈为空或者该符号为左括号或者栈顶元素为括号,直接入栈。
    • 如果遇到一个右括号,持续出栈并输出符号,直到栈顶元素为左括号,然后将左括号出栈(注意,左括号只出栈,不输出),右括号不入栈。
    • 如果遇到运算符号且栈非空,查看栈顶元素,如果栈顶元素的运算优先级大于或者等于该运算符号,则持续出栈,直到栈顶元素优先级小于该运算符。最后将该元素入栈。
    • 如果我们读到了输入的末尾,则将栈中所有元素依次弹出。
  • 生成随机数的运用

    • Random ran = new Random();随机数方法创建对象
    • int B = ran.nextInt(2);生成0—1之内的随机数
  • 需求分析

    • 随机生成题目
      • 生成题目数量根据用户需求输入
      • 自动生成小学四则运算题目(加、减、乘、除)
      • 支持整数和真分数
      • 支持多运算符(比如生成包含100个运算符的题目)
    • 统计正确率
    • 能多次生成题目

    • 扩展需求
      • 题目去重
      • 支持多语言
      • 处理生成题目并输出到文件
      • 完成题目后从文件读入并判题
  • 设计思路

    • 实验首先是完成一个计算器的功能,可以实现简单的+、-、*、/运算
    • 实现多运算符,编入四个类分别实现整数运算、真分数运算、判断结果正确并计算正确率
    • 利用JUnit检测非法输入
    • 设计一个主类生成随机数,生成题目,并判断正确率
    • 设计测试类,利用JUnit测试整数类与分数类的四则运算

uml图:
技术分享图片

核心代码及注释

public class Calculate {
    public static void main(String[] args) {
        NumberFormat number = NumberFormat.getPercentInstance();
        Random ran = new Random();
        Scanner scan = new Scanner(System.in);
        while (true) {
            System.out.print("请输入您所需要生成的题目数量:");
            int A = scan.nextInt();                        //A:题目数量
            for (int i = 0; i < A; i++) {
                int B = ran.nextInt(2);                //生成随机数0/1,随机挑选整数或分数运算
                int C = ran.nextInt(4);                //生成随机数0-3,随机挑选4种运算符
                IntNumber in1 = IntNumber.obj();               //整数运算
                IntNumber in2 = IntNumber.obj();
                Fraction score1 = Fraction.obj();              //分数运算
                Fraction score2 = Fraction.obj();
                if (B == 0) {
                    switch (C) {                                //整数加减乘除运算
                        case 0:
                            int num = in1.add(in2);
                            String num1 = "" + num;
                            int n = scan.nextInt();
                            Judgement.judge(n == num, num1);

测试代码

技术分享图片
技术分享图片

运行结果截图

技术分享图片

结对伙伴评价

讲道理,两个菜鸡,这种难度的编程题确实让我们焦头烂额....

BUT

日子还得照样过,代码还得照样敲,从之前一个人问变成现在两个人一起向同学请教学习,说实话,确实两个人一起问,不懂得互相交流,学起来快乐一点吧。谢谢我的搭档




以上是关于20165104-Java第一次结对编程练习的主要内容,如果未能解决你的问题,请参考以下文章

软工15结对编程练习

20165104-JAVA第三次实验

20172319 结对编程练习_四则运算第二周阶段性总结

20175202 结对编程练习—四则运算(第一周)

2017-2018-2 1723 『Java程序设计』课程 结对编程练习-四则运算-准备阶段

结对编程练习_四则运算(第一周)