博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
作业5 四则运算 测试与封装 5.1
阅读量:5160 次
发布时间:2019-06-13

本文共 3731 字,大约阅读时间需要 12 分钟。

开发环境:eclipse

结对同伴 :32 马志磊

同伴博客:http://www.cnblogs.com/mac54321/

程序介绍:

  1.第一阶段目标 - 把计算的功能封装成类。

  2.设计测试用例:用白盒与黑盒测试设计技术,为计算核心设计测试用例。

  3.在实验环境中(如MyEclipse集成开发环境+Junit测试框架)运行测试用例,分析测试结果,找出程序问题,给出改进前后的代码对照。

程序代码:

Calculator.java

public class Calculator {    /**     * @param args     */ public static void main(String[] args) { // TODO Auto-generated method stub String exp=new String("25+5+30+6="); Core c=new Core(); String result=c.jisuan(exp); System.out.print(result); } }

 

Core.java

public class Core {    public String jisuan(String str) {        String num[] =new String[10];        int number[] =new int[10];        char operator[]=new char [10];        int brackets=0,endbrackets=0;        int posbra=0,endposbra=0;        int j;int k;        double result=0;        for(int i=0;i<10;i++)        {            num[i]="";            number[i]=0;        }        j=0;k=0;        for(int i=0;str.charAt(i)!='=';i++)        {            if(str.charAt(i)>='0' && str.charAt(i)<='9' ||  str.charAt(i)=='.')            {                num[j]=num[j]+ str.charAt(i);            }            else if(str.charAt(i)=='+' || str.charAt(i)=='-' || str.charAt(i)=='*' || str.charAt(i)=='/')            {                j++;                operator[k]=str.charAt(i);                k++;            }            else if(str.charAt(i)=='(')            {                brackets++;                posbra=i;            }else if(str.charAt(i)==')'){                endbrackets++;            }        }            if(brackets!=endbrackets)            return "括号不对称";        if(j==0)            return String.valueOf(Double.parseDouble(num[0]));        else        {            int pos=-1;            String str2=new String("");            for(int i=0;i<=k;i++)            {                if(operator[i]=='*' || operator[i]=='/')                    pos=i;            }            if(pos==-1)                pos=0;            for(int i=0;i

初步测试结果:

(1)

(2)

(3)

(4)

然后发现当除数为0的时候 出现了错误 !

然后我们进行了修改

 

在原来的Core.java的

for(int i=0;i<=k;i++)            {                if(operator[i]=='*' || operator[i]=='/')                    pos=i;            }

for 循环中 添加多一个判断 检测除数是否为0 如果为0则提示错误

修改如下:

for(int i=0;i<=k;i++)            {                if(operator[i]=='*' || operator[i]=='/')                    pos=i;                if(operator[i]=='/')                    if(Double.parseDouble(num[i+1])==0)                        return "公式错误!除数不能为0";            }

然后运行结果:

 

然后当用户发现输入"1+1++1="的公式时 又出现这样的错误 不能连续输入两个或以上的运算符

然后我们又做了如下的修改:

在原来的Core.java的

for(int i=0;str.charAt(i)!='=';i++)        {            if(str.charAt(i)>='0' && str.charAt(i)<='9' ||  str.charAt(i)=='.')            {                num[j]=num[j]+ str.charAt(i);            }            else if(str.charAt(i)=='+' || str.charAt(i)=='-' || str.charAt(i)=='*' || str.charAt(i)=='/')            {                j++;                operator[k]=str.charAt(i);                k++;            }            else if(str.charAt(i)=='(')            {                brackets++;                posbra=i;            }else if(str.charAt(i)==')'){                endbrackets++;            }        }

修改成

for(int i=0;str.charAt(i)!='=';i++)		{			if(str.charAt(i)>='0' && str.charAt(i)<='9' ||  str.charAt(i)=='.')			{				flag=false;				num[j]=num[j]+ str.charAt(i);			}			else if(str.charAt(i)=='+' || str.charAt(i)=='-' || str.charAt(i)=='*' || str.charAt(i)=='/')			{				if(flag==true) return "公式错误!不能连续输入运算符";				flag=true;				j++;				operator[k]=str.charAt(i);				k++;			}			else if(str.charAt(i)=='(')			{				brackets++;				posbra=i;			}else if(str.charAt(i)==')'){				endbrackets++;			}		}

就是多添加了一个标志flag,当连续出现运算符时就返回错误信息!

运行结果:

目前括号还没有完善,暂时还没想出好的思路去实现

 

转载于:https://www.cnblogs.com/383237360q/p/4468669.html

你可能感兴趣的文章
浏览器对属性兼容性支持力度查询网址
查看>>
OO学习总结与体会
查看>>
虚拟机长时间不关造成的问题
查看>>
校门外的树2 contest 树状数组练习 T4
查看>>
面试整理:Python基础
查看>>
Python核心编程——多线程threading和队列
查看>>
Program exited with code **** 相关解释
查看>>
植物大战僵尸中文年度版
查看>>
26、linux 几个C函数,nanosleep,lstat,unlink
查看>>
投标项目的脚本练习2
查看>>
201521123107 《Java程序设计》第9周学习总结
查看>>
Caroline--chochukmo
查看>>
iOS之文本属性Attributes的使用
查看>>
从.Net版本演变看String和StringBuilder性能之争
查看>>
Excel操作 Microsoft.Office.Interop.Excel.dll的使用
查看>>
解决Ubuntu下博通网卡驱动问题
查看>>
【bzoj2788】Festival
查看>>
执行gem install dryrun错误
查看>>
HTML5简单入门系列(四)
查看>>
实现字符串反转
查看>>