• 20192317 2020-2021-1 《数据结构与面向对象程序设计》实验二报告


    20192317 2020-2021-1 《数据结构与面向对象程序设计》实验二报告

    课程:《程序设计与数据结构》
    班级: 1923
    姓名: 邓子彦
    学号:20192317
    实验教师:王志强
    实验日期:2020年10月9日
    必修/选修: 必修

    1.实验内容

    (1) 编写简单的计算器,完成加减乘除模运算。
    (2) 要求从键盘输入两个数,使用判定语句选择一种操作,计算结果后输出,然后使用判定和循环语句选择继续计算还是退出。
    (3) 编写测试代码,测试验证。(https://www.cnblogs.com/rocedu/p/4472842.html)

    2. 实验过程及结果

    码云链接:https://gitee.com/besti1923/feimao-has-no-legs.git

    • 1.编写产品代码
    import java.util.Scanner;
    
    public class calculator {
        public static void main(String[] args) {
            System.out.println("Welcome!");
            System.out.println("Please input two numbers m and n:");
            Scanner input = new Scanner(System.in);
            int m = input.nextInt();
            int n = input.nextInt();
            for(;;){
                System.out.println("What kind of operations do you want?");
                System.out.println("1.addition");
                System.out.println("2.m minus n
    3.n minus m");
                System.out.println("4.m mod n
    5.n mod m");
                System.out.println("6.quit");
                int a = input.nextInt();
                calculate(m, n, a);
                if(a < 1 || a > 6){
                    System.out.println("error!please choose again");
                }
                if(a == 6)
                break;
            }
        }
        public static int calculate(int x,int y,int z){
                int b=0;
                if(z == 1)
                {
                    b =x+y;
                    System.out.println("m+n="+ (x+y));
                }
                if(z == 2)
                {
                    b =x-y;
                    System.out.println("m-n="+ (x-y));
                }
                if(z == 3)
                {
                    b =y-x;
                    System.out.println("n-m="+ (y-x));
                }
                if(z == 4)
                {
                    b =x%y;
                    System.out.println("m%n="+ (x%y));
                }
                if(z == 5)
                {
                    b =y%x;
                    System.out.println("n%m="+ (y%x));
                }
            return b;
        }
    }
    
    • 2.编写测试代码
    public class calculatorTest {
        public static void main(String[] args) {
            if(calculator.calculate(2,3,1) != 5)
                System.out.println("test failed!");
            else System.out.println("test succeed!");
            if(calculator.calculate(2,3,2) != -1)
                System.out.println("test failed!");
            else System.out.println("test succeed!");
            if(calculator.calculate(2,3,3) != 1)
                System.out.println("test failed!");
            else System.out.println("test succeed!");
            if(calculator.calculate(2,3,4) != 2)
                System.out.println("test failed!");
            else System.out.println("test succeed!");
            if(calculator.calculate(2,3,5) != 1)
                System.out.println("test failed!");
            else System.out.println("test succeed!");
        }
    }
    

    3. 实验过程中遇到的问题和解决过程

    • 问题1:编写计算器程序的时候,不知道测试代码该怎么写
    • 问题1解决方案:按照教程上的方法走了一遍,发现教程上的情况太理想了,一切都太顺利,真正转换成自己的代码要去操作时,出现各种问题,比如测试代码不能运行(后面发现是我自己的问题)。查教程完成不了,就去问助教,问了半天助教也不知道我的想问的问题是什么,不了解我的疑惑在哪里。想了一晚上,还是没想明白,我去博客园看看其他同学写的代码,开始反思自己的程序。后面修改自己的程序代码,把函数的使用更加规范,再参照教程上然后再写测试代码,然后测试成功。
    • 问题2:云班课上的idea连接码云的视频太快了,看不懂是怎么连接的码云,加上我把自己的idea设置成了汉字,所以有一些视频上的英语很难对应(一般只能对应快捷键)
    • 问题2解决方案:问宿舍里会连接码云的同学,给我演示了一遍怎么上传空的文件到码云里,然后自己操作了一次把写好的计算器代码和测试代码上传到码云。

    其他(感悟、思考等)

    • 感悟:这次实验可以明显看出我的编程基础很差,在计算器的程序就能看出。刚开始编写的计算器程序,所有的内容都写在主函数main里面,导致刚开始测试的时候使用不了主函数main。后面修改之后把提醒和调用函数一起写在了主函数main,把计算过程独立在计算函数里面,然后测试代码那边可以调用这个计算函数进行调试。这次的实验感悟给我最大莫过于从现在开始要把自己的基础打扎实,不然一些简单的小问题能卡住特别长的时间。
    • 思考:我现在觉得调试这个功能其实也不是特别厉害,我如果能想到有哪些bug会出现的话,直接在代码里面就解决了,编程序的时候想不到,写调试程序的时候也未必想得到。如果在是测试驱动开发里面,调试的作用可能会大一点,我也不清楚

    参考资料

  • 相关阅读:
    品Spring:真没想到,三十步才能完成一个bean实例的创建
    品Spring:对@Autowired和@Value注解的处理方法
    品Spring:对@Resource注解的处理方法
    品Spring:对@PostConstruct和@PreDestroy注解的处理方法
    品Spring:详细解说bean后处理器
    品Spring:bean工厂后处理器的调用规则
    品Spring:注解之王@Configuration和它的一众“小弟们”
    品Spring:SpringBoot发起bean定义注册的“二次攻坚战”
    品Spring:SpringBoot轻松取胜bean定义注册的“第一阶段”
    .net的retrofit--WebApiClient底层篇
  • 原文地址:https://www.cnblogs.com/dengziyan/p/13789694.html
Copyright © 2020-2023  润新知