用java scanner 编写计算器程序

来源:互联网 发布:玻璃体混浊 知乎 编辑:程序博客网 时间:2024/06/05 16:27

写了个简单java 计算器程序,记录一下

package test;import java.util.Scanner;import java.util.regex.Matcher;import java.util.regex.Pattern;class Calculator {private Double num1;private Double num2;private String var;private  Scanner input;public Double getNum1() {return num1;}public void setNum1(Double num1) {this.num1 = num1;}public Double getNum2() {return num2;}public void setNum2(Double num2) {this.num2 = num2;}public String getVar() {return var;}public void setVar(String var) {this.var = var;}public Scanner getInput() {return input;}public void setInput(Scanner input) {this.input = input;}public boolean input1(){        System.out.println("请输入第一个数字");        String num1Str = input.next();        if(!this.isNumber(num1Str)){        input1();        }else{        this.num1 =Double.valueOf(num1Str);        }        return true;        }public boolean input2(){        System.out.println("输入第二个数:");        String num2Str = input.next();        if(!this.isNumber(num2Str)){        input2();        }else if(var.equalsIgnoreCase("/")&&num2Str.equalsIgnoreCase("0")){        System.err.println("除数不能为0");        input2();        }else{        this.num2 =Double.valueOf(num2Str);        }        return true;}public boolean inputVar(){System.out.println("输入计算符号:+ - * /");String varStr=input.next(); Pattern pat=Pattern.compile("[+-\\\\*/]"); Matcher match=pat.matcher(varStr); boolean flag=match.matches(); if(flag==false){ System.err.println("运算符号不正确!"); inputVar(); }else{ this.setVar(varStr); }         return true;}public void goCal(){Scanner input= new Scanner(System.in);this.setInput(input);boolean flag1=this.input1();if(flag1){if(this.inputVar()){if(this.input2()){calculate();}}}}    public void calculate(){    try {switch (var) {case "+":System.out.println(num1+"+"+num2+"="+(num1+num2));break;case "-": System.out.println(num1+"-"+num2+"="+(num1-num2));break;case "*": System.out.println(num1+"-"+num2+"="+(num1*num2));break;case "/":System.out.println(num1+"/"+num2+"="+(num1/(double)num2));break;default:break;}} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();if(input!=null){    input.close();    System.exit(0);    }}    if(input!=null){input.close();System.exit(0);}           }    public boolean isNumber(Object obj){    if(obj==null||obj.toString().equals("")){    return false;    }    Pattern pattern=Pattern.compile("[0-9]+.*[0-9]*");    String str=obj.toString();    Matcher matcher=pattern.matcher(str);    boolean flag=matcher.matches();    if(flag==false){    System.err.println("请输入有效数值!");    }    return flag;    }}public class TestB {public static void main(String[] args) {Calculator cal = new Calculator();cal.goCal();}}



0 0