zoukankan      html  css  js  c++  java
  • 作业5.2


     

    开发环境:Eclipse 

    队员:吴舒婷 http://www.cnblogs.com/wst-2015/

    第二阶段目标 - 通过测试程序和API 接口测试其简单的加减乘除功能。并能看到代码覆盖率。

      这个阶段在上次5.1的作业中已经有所体现了,

    1、加减乘除的基本算法:

    2、除法除数为0的处理:

    测试:

    作业5.1中实现

    第三阶段目标 - 通过测试程序和API 接口测试对于各种参数的支持。并能看到代码覆盖率。

    主要是对参数的支持:

    1、对用户输入操作数个数的要求测试:只能输入2~5,输入其他都无效或者报错

    System.out.println("选择多少个操作数:(2~5)");
            try
            {
                boolean value=false;
                while(value==false){
                    num=in.nextInt();//操作数
                    if(num<2||num>5)
                        System.out.println("	超出范围!!请重新输入:");
                    else value=true;
                }
            }    
            catch(Exception e){
                System.out.println("输入不合符合要求!!");
            }
            
    检查操作数个数的输入

     

    2、对操作数的支持测试:检测用户输入的操作数是否符合要求(-100~100   其他字符无效,例如:g、t、%)

    检查操作数
    static float checknum(String astr1)//检查操作数
        {
             float a = 0;
            for(int i=0;i<num;i++)
            {
                boolean value=false;
                while (value==false){
                try {
                    
                 a=Float.parseFloat(astr1); //可以转换为整型;
                 if(a>=-100&&a<=100) 
                      value=true;
                 else{
                     System.out.println("操作符不在运算范围内!!重新输入");
                     astr1=in.next();
                 }
                } catch (Exception g) {
                   System.out.println("操作数错误,重新输入:");   
                   astr1=in.next();
                   
                     
                 }
            }    
            }
            return a;
        }

     

    3、对运算符的支持测试:检测用户输入的操作数是否符合要求(只能输入:+  -  *  /    其他非法字符无效 )

    static String checkoper(String a1,String oper1)//检查运算符
        {
            //检查运算符
            for(int i=0;i<num-1;i++)
            {
                boolean value=false;
                while(value==false){
                    if( oper1.equals("+")|| oper1.equals("-")
                    ||oper1.equals("*")||oper1.equals("/"))
                    {
                        value=true;
                        
                    }
                    else
                    
                   {
                        System.out.println("输入的运算符不合法");
                        oper1=in.next();
                        
                        
                   }
                    
                }
            }
            return oper1;
        }
    检查运算符

     

    4、对用户输入的答案进行处理测试:能输入数值,或者分数形式(例如:4、-1、(4/5))

    static float solvesuerans(String userans)//处理用户输入的答案,return 用户输入的答案
        {
            float cs[]=new float[2];
            float user = 0;
             try {
                 user=Float.parseFloat(userans);
               } 
              catch (Exception g) {
                 
                  String[] ss = new String[2];
                    ss = userans.split("/");
                    try{
                    cs[0] = Float.valueOf(ss[0]);
                    cs[1] = Float.valueOf(ss[1]);
                    //System.out.println(cs[0]+"    "+cs[1]);
                    user =  cs[0] / cs[1];
                    //System.out.println(answer);
                    String str=decimal.format(user);
                     user=Float.parseFloat(str);     
                    }catch(Exception e)
                    {
                        System.out.println("异常!!输入的答案无效!!");
                    }
            }
            
            return user;
        }
    用户输入处理

     

    用户可以输入有字符的式子

     

    源代码:

    package 片段;
    
    import java.text.DecimalFormat;
    import java.util.Scanner;
    
    
    
    
    public class Input {    
        static Scanner in=new Scanner(System.in);
        static DecimalFormat decimal = new DecimalFormat("#.##");
        static int num;
        
        static void input(String astr1[],String oper1[],float a[])//输入数据
        {
            System.out.println("选择多少个操作数:(2~5)");
            try
            {
                boolean value=false;
                while(value==false){
                    num=in.nextInt();//操作数geshu
                    if(num<2||num>5)
                        System.out.println("	超出范围!!请重新输入:");
                    else value=true;
                }
            }    
            catch(Exception e){
                System.out.println("输入不合符合要求!!");
            }
            
            //输入操作数
            for(int i=0;i<num;i++)
            {
                
                System.out.println("第"+(i+1)+"个操作数:");
                astr1[i]=in.next();
                a[i]=checknum(astr1[i]);    
            }
            
            //输入运算符
            for(int i=0;i<num-1;i++)
            {
                
                System.out.println("第"+(i+1)+"个运算符:");
                oper1[i]=in.next();
                oper1[i]=checkoper(astr1[i+1],oper1[i]);
            }
            formula(a,oper1);//显示出式子
        }
        
        static float checknum(String astr1)//检查操作数
        {
             float a = 0;
            for(int i=0;i<num;i++)
            {
                boolean value=false;
                while (value==false){
                try {
                    
                 a=Float.parseFloat(astr1); //可以转换为整型;
                 if(a>=-100&&a<=100) 
                      value=true;
                 else{
                     System.out.println("操作符不在运算范围内!!重新输入");
                     astr1=in.next();
                 }
                } catch (Exception g) {
                   System.out.println("操作数错误,重新输入:");   
                   astr1=in.next();
                   
                     
                 }
            }    
            }
            return a;
        }
        static int CherkZero(String oper1[],String a1[])
        {
            for(int i=0;i<Input.num-1;i++){
                if(oper1[i].equals("/"))
                {
                    float atest=Float.parseFloat(a1[i+1]);
                    if(atest==0)
                    {
            
                        System.out.println("
    除数不能为0,式子无效");
                        return 0;
                    
                    }
                }
            }
            return 1;
        }
        static String checkoper(String a1,String oper1)//检查运算符
        {
            //检查运算符
            for(int i=0;i<num-1;i++)
            {
                boolean value=false;
                while(value==false){
                    if( oper1.equals("+")|| oper1.equals("-")
                    ||oper1.equals("*")||oper1.equals("/"))
                    {
                        value=true;
                        
                    }
                    else
                    
                   {
                        System.out.println("输入的运算符不合法");
                        oper1=in.next();
                        
                        
                   }
                    
                }
            }
            return oper1;
        }
        
        static void formula(float a1[],String oper1[])//显示出式子方程式
        {
            String s1=new String();
            
            String S=new String();
            System.out.print("输入的式子为:");
            for(int i=0;i<num;i++){
                if(i<(num-1))
                {
                    if(a1[i]<0)
                        s1=String.valueOf("("+a1[i]+")");
                    else
                        s1=String.valueOf(a1[i]);
                    S=S+s1+oper1[i];
                }    
                else
                {
                    if(a1[i]<0)
                        s1=String.valueOf("("+a1[i]+")");
                    else
                        s1=String.valueOf(a1[i]);
                    S=S+s1;
                }
            }
            System.out.print(S+"=");
        }
    }
    Input
    package 片段;
    
    import java.text.DecimalFormat;
    import java.util.Scanner;
    
    public class CalTest {
        static Scanner in=new Scanner(System.in);
        static DecimalFormat decimal = new DecimalFormat("#.##");
        static void judge(float a[],String oper[])//判断
        {
            System.out.println("
    请输入你的答案~~");
            String userans=in.next();
            float user=solvesuerans(userans);    
             
            
            float staticanswer=Cal(a,oper);
            
            if( user==staticanswer)
                System.out.println("回答正确!");
            else
                System.out.println("回答错误!答案为:"+staticanswer);
        }
    
        static float solvesuerans(String userans)//处理用户输入的答案,return 用户输入的答案
        {
            float cs[]=new float[2];
            float user = 0;
             try {
                 user=Float.parseFloat(userans);
               } 
              catch (Exception g) {
                 
                  String[] ss = new String[2];
                    ss = userans.split("/");
                    try{
                    cs[0] = Float.valueOf(ss[0]);
                    cs[1] = Float.valueOf(ss[1]);
                    //System.out.println(cs[0]+"    "+cs[1]);
                    user =  cs[0] / cs[1];
                    //System.out.println(answer);
                    String str=decimal.format(user);
                     user=Float.parseFloat(str);     
                    }catch(Exception e)
                    {
                        System.out.println("异常!!输入的答案无效!!");
                    }
            }
            
            return user;
        }
    
        static float Cal(float a[],String oper[]){  //计算出结果,return出一个正确答案
        int sign; // 累加运算时的符号
        float left, right;// 保存蹭结果
        float answer;
        // 计算标准答案
        left = 0;
        right =a[0];
        sign = 1;
        
        for (int g = 0; g <Input. num - 1; g++) {
            if(oper[g].equals("+")){
                left = left + sign * right;
                sign = 1;
                right = a[g + 1];
                
            }
            else if(oper[g].equals("-")){
                left = left + sign * right;
                sign = -1;
                right = a[g + 1];
            }
            else if(oper[g].equals("*")){
                right = right * a[g + 1];
            }
            else if(oper[g].equals("/")){
                right = right / a[g + 1];
            }
            
        }
        String staticanser = decimal.format(left + sign* right);
        
        answer=Float.parseFloat(staticanser); //可以转换为整型;
        
        return answer;
        }
    
    }
    CalTest
    package 片段;
    
    public class MainTest {
        static String[] astr=new String[10];
        static String[] oper=new String[5];
         static float[] a=new float[10];
        public static void main(String[] args) {
            Input.input(astr,oper,a);//操作数字符数组、运算符字符数组、操作数转float的数组
            int i=Input.CherkZero(oper, astr);
            if(i!=0)
                CalTest.judge(a,oper);//判断
        }
    }
    MainTest

     测试文件:

    package 片段;
    
    import org.junit.Test;
    
    public class InputTest {
    
        @Test
        public void testInput() {    
            Input.input(MainTest.astr,MainTest.oper,MainTest.a);
            
            
        }
        
        
        @Test
        public void testCherkZero() {
            MainTest m1=new MainTest();
            Input.CherkZero(m1.oper, m1.astr);
        }
        
    
        
        @Test
        public void testjudge() {
            CalTest.judge(MainTest.a, MainTest.oper);
        }
    
        @Test
        public void testsolvesuerans() {
            CalTest.Cal(MainTest.a, MainTest.oper);
        }
    }
    Test

    请继续收看更新

  • 相关阅读:
    623. Add One Row to Tree 将一行添加到树中
    771. Jewels and Stones 珠宝和石头
    216. Combination Sum III 组合总数三
    384. Shuffle an Array 随机播放一个数组
    382. Linked List Random Node 链接列表随机节点
    向github项目push代码后,Jenkins实现其自动构建
    centos下安装Jenkins
    python提取批量文件内的指定内容
    批处理实现:批量为文件添加注释
    python抓取每期双色球中奖号码,用于分析
  • 原文地址:https://www.cnblogs.com/maxx/p/4488407.html
Copyright © 2011-2022 走看看