源代码如下:
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();
}
}