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

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

课程:《程序设计与数据结构》
班级: 1923
姓名: 孙洪丽
学号: 20192306
实验教师:王志强
实验日期:2020年10月8日
必修/选修: 必修

1.实验内容

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

2. 实验过程及结果

  • 计算器代码编写
import java.util.Scanner;
public class calculator {
    public static void main(String[] args) {
        String symbol;
        Scanner scan =new Scanner(System.in);
        double scan1, scan2;
        char ch;
        int a;
        do {
            a=0;
            System.out.println("Please choose what do you want to do : ");
            symbol=scan.next();
            ch = symbol.charAt(0);
            System.out.println("Please input a and b : ");
            scan1=scan.nextDouble();
            scan2=scan.nextDouble();
            switch (ch) 
            {
                case '+':
                {System.out.println("a+b= " + (scan1+scan2));break;}
                case '-':
                {System.out.println("a-b= " + (scan1-scan2));break;}
                case '*':
                {System.out.println("a*b=" + (scan1*scan2));break;}
                case '/':
                {System.out.println("a/b=" + (scan1/scan2));break;}
            }
                System.out.println("If you want to continue,please enter 1, else enter 0.");
                a = scan.nextInt();
                if(a==0)
                {
                    System.out.println("You have quit it.");
                }
        }while(a==1);
    }
}
  • 代码运行结果截图
  • 测试代码编写
import junit.framework.TestCase;
import org.junit.Test;
public class calculatorTest extends TestCase {
        @Test
        public void testAdd() throws Exception
        {
            assertEquals(3,2+1);
            assertEquals(56,33+23);
        }
        @Test
        public void testSub() throws Exception
        {
            assertEquals(1,2-1);
            assertEquals(10,33-23);
        }
        @Test
        public void testMul() throws Exception
        {
            assertEquals(2,2*1);
            assertEquals(759,33*23);
        }
        @Test
        public void testDiv() throws Exception
        {
            assertEquals(2,2/1);
            assertEquals(1,33/23);
        }

}

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

  • 问题1:将所有变量都使用System.in输入,编写时出现了编译错误;
  • 问题1解决方案:只保留第一个System.in输入,后面的都用scan.next...()来输入。
  • 问题2:测试过程中,因为输入的项目比较多,而各项目的变量类型都不同,所以极易因为输入类型错误而造成程序中断。
  • 问题2解决方案:在代码中加入一些提示性语句的输出,更加简明直观。
  • 问题3:上传码云过程中,出现错误“git push rejected”,一般在终端中输入“git pull”等命令可解决问题,但是输入后虽然不显示“rejected”,但依然无法将代码上传;
  • 问题3解决方案:在gitee中手动添加码云仓库,登陆连通,选择仓库时直接在IDEA内部选择。

其他(感悟、思考等)

  • 本次实验抛弃了命令行,完全使用IDEA,使用起来相较于Linux命令行有明显优越性,但是下载配置插件上和连接码云上没有命令行方便,而且多次下载失败;
  • IDEA在运行程序时,只要当前文件夹下有错误,就会直接报错,没有办法单独运行某一程序,所以在使用时,要确保每一个代码正确运行,或者选择建立大量文件夹分类存放(这种方式可能在上传码云时找不到文件)。
  • 在定义使用“symbol”和“ch”时,尝试过只定义了一个字符型“ch”或只定义字符串“symbol”,虽然最后都失败了,但是让我重新回忆起了这些基本函数的变量类型,Java与C相似,应该回顾一下C写过的代码,重温一下基本的语法。
  • 做的时候只写了计算器的代码,快到截至时间了才发现还要写一个测试代码,急忙补了一个,但不得不说用TDD写测试代码简单多了。

参考资料

posted @ 2020-10-09 00:09  20192306孙洪丽  阅读(127)  评论(0编辑  收藏  举报