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();
 }

}

 
 
原文地址:https://www.cnblogs.com/chenhao123/p/6611960.html