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

    请继续收看更新

  • 相关阅读:
    SpringRMI解析3-RmiServiceExporter逻辑细节
    SpringRMI解析2-RmiServiceExporter逻辑脉络
    SpringRMI解析1-使用示例
    SpringMVC解析5-DispatcherServlet逻辑细节
    SpringMVC解析4-DispatcherServlet逻辑脉络
    SpringMVC解析3-DispatcherServlet组件初始化
    SpringMVC解析2-ContextLoaderListener
    算法笔记_074:子集和问题(Java)
    算法笔记_073:哈密顿回路问题(Java)
    算法笔记_072:N皇后问题(Java)
  • 原文地址:https://www.cnblogs.com/maxx/p/4488407.html
Copyright © 2011-2022 走看看