• code review


    源代码如下:

    import java.util.Scanner;

    public class Test {
     static boolean flag = false;
     /**
      * 获取输入数字
      * @return
      */
     public static double dataInput(){
      double stmp = 0;
      flag = false;
      try {
       Scanner sc = new Scanner(System.in);
       stmp = sc.nextDouble();
      } catch (Exception e) {
       flag = true;
       System.out.println("输入数据类型错误!请重新输入!");
       stmp = 0;
      }
      return stmp;
     }
     /**
      * 运算方法
      * @param d1
      * @param d2
      * @return
      */
     public static double division(double d1,double d2){
      double temp = 0;
      flag = false;
      try {
       temp = d1/d2;
      } catch (Exception e) {
       flag = true;
       System.out.println("除数不能为0");
       temp = 0;
      }
      return temp;
     }
     
     public static void main(String[] args) {
      double d1 = 0;
      double d2 = 0;
      while(true){
       System.out.println("----------开始-----------");
       do{
        System.out.print("请输入除数:");
        d1 = dataInput();
       }while(flag);
       
       do{
        System.out.print("请输入被除数:");
        d2 = dataInput();
       }while(flag);
       System.out.println("运算结果为:"+division(d1, d2));
      }
     }
    }

    纠正

    有两个的问题:

    1.输入的时候,你还不知道人家输入的是不是数字呢,怎么能用 sc.nextDouble()来获取浮点数呢?

    2.那个判断数字的正则表达式好像有点问题

    改后的代码如下(类名稍微改了一下):

    import java.util.Scanner;
    import java.util.regex.Pattern;

    public class Ask
    {
     private static double divisor;// 被除数

     private static double dividend; //除数

     private static String stmp;

     public static double dataInput()
     {
      try
      {
       Scanner sc = new Scanner(System.in);
       stmp = sc.nextLine();
      }
      catch (Exception e)
      {
       System.err.println("dataInput()方法异常" + e.getMessage());
       e.printStackTrace();
      }
      isdoubleNumber();//判断是否为浮点数
      return Double.parseDouble(stmp);
     }

     //正则表达式判断是否为浮点数
     public static void isdoubleNumber()
     {
      //检查一个字符串是否是浮点小数,浮点小数至少一个数字开头,允许一个正负符号位
      //中间只出现一个小数点,小数点之后至少一个数字
      String aString = stmp;//将输入值转化成字符串型
      boolean judge;
      if (aString == null || aString.length() < 1)
      {
       System.out.println("没有输入!请输入:");
       dataInput();
      }

      Pattern isDoubleNum = Pattern.compile("^[+-]?[\d]+(.[\d])?$");
      judge = isDoubleNum.matcher(aString).find();
      if (judge == false)
      {
       System.out.println("输入有误,要重新输入:");
       dataInput();
      } else
      {
       System.out.println("输入没问题!");
      }
     }

     //按要求做除法
     public static void division()
     {
      System.out.println("请输入被除数:");
      try
      {
       dividend = dataInput();

      } catch (Exception e)
      {
       System.err.println("被除数输入不对:" + e.getMessage());
       e.printStackTrace();
      }
      System.out.println("要重新输入被除数:");
      dividend = dataInput();

      System.out.println("这里是输入除数:");
      divisor = dataInput();
      while (divisor == 0)
      {
       System.out.println("除数为零!----->要重新输入:");
       try
       {
        divisor = dataInput();
       } catch (Exception e)
       {
        System.err.println("division()方法中divisor输入数据异常"
          + e.getMessage());
        e.printStackTrace();
       }
       divisor = dataInput();
      }

      System.out.println("********************************************");
      System.out.println("dividend/divisor的结果为:" + dividend / divisor);
     }

     public static void main(String[] args)
     {
      Ask.division();
     }

    }

     
     
  • 相关阅读:
    selenium 截图加上时间戳
    python UI自动化实战记录二:请求接口数据并提取数据
    jsonp跨域请求响应结果处理函数(python)
    启动不同的浏览器函数封装
    python UI自动化实战记录一:测试需求与测试思路
    python接口测试-项目实践(七)脚本优化
    python接口测试-项目实践(六) 实际结果与预期结果对比之 数据源与数据库对比
    python接口测试-项目实践(五) 实际结果与预期结果对比之 接口对比
    python接口测试-项目实践(四)拼接出预期结果
    python接口测试-项目实践(三)数据的处理示例
  • 原文地址:https://www.cnblogs.com/chenhao123/p/6611960.html
Copyright © 2020-2023  润新知