中易网

java代码修改

答案:4  悬赏:70  
解决时间 2021-04-28 02:47
  • 提问者网友:浪荡羁士
  • 2021-04-27 13:48

要求和源码如下,未能得出要求的结果:

package My_exercise;

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

public class myDivision {
 
 private static double divisor ;// 被除数
 private static double dividend   ; //除数
 private static double stmp;     
 
 public static double dataInput( ){
  try{
   Scanner sc=new Scanner(System.in);
   stmp = sc.nextDouble();
  }
  catch(Exception e){
   System.err.println("dataInput()方法异常"+e.getMessage());
   e.printStackTrace();
  }
  isdoubleNumber();//判断是否为浮点数
  return stmp;  
 }
 
 //正则表达式判断是否为浮点数
 public static void isdoubleNumber() {
        //检查一个字符串是否是浮点小数,浮点小数至少一个数字开头,允许一个正负符号位
        //中间只出现一个小数点,小数点之后至少一个数字
  String aString =String.valueOf(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){
  myDivision md = new myDivision();
  md.division();
 }
}

 

最佳答案
  • 二级知识专家网友:萌萌哒小可爱
  • 2021-04-27 14:43

import java.util.Scanner;



public class Test {
 static boolean flag = false;
 
 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;
 }
 
 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楼网友:短发女王川岛琦
  • 2021-04-27 18:08

可以通过四个方法实现。

public boolean isNumber(String number);  //验证是否为数字

public boolean isDoubleNumber(String number); //验证是否浮点数

public Double StringToNumber(String number) ; //字符串转换为浮点数

public Double getNumber(Double number1,Double number2); 获取两个数的商

  • 2楼网友:我叫很个性
  • 2021-04-27 16:57

import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader;

class Divisor extends Exception{  public Divisor(){   super("除数不能为0");  } } public class T1a {  public void fun() throws Divisor{   BufferedReader br = new BufferedReader(new InputStreamReader(System.in));   double divisor = 0;   double dividend = 0;      try{    System.out.println("请输入除数:");    divisor = Double.parseDouble(br.readLine());    System.out.println("请输入被除数:");    dividend = Double.parseDouble(br.readLine());    if(divisor == 0){    //如果除数等于0则抛出异常     throw new Divisor();    }    else{     System.out.println(divisor + "/" + dividend + "=" + (divisor/dividend));    }   }   catch(NumberFormatException nfe){    nfe.printStackTrace();   }   catch(IOException ioe){    ioe.printStackTrace();   }  }  public static void main(String[] args) {   try {    new T1a().fun();   }   catch (Divisor e) {    e.printStackTrace();   }  } }

初学者,没用Scanner...不知道对你有帮助否.

  • 3楼网友:错过的是遗憾
  • 2021-04-27 15:22

有两个的问题:

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

}

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息