zoukankan      html  css  js  c++  java
  • java 程序,通过scanner 编写计算器

    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 block
                e.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();
            
            
        }
    
    }
  • 相关阅读:
    svn更改默认服务启动目录
    centos systemctl指令
    centos 安装mysql
    centos bad ELF interpreter: No such file or directory
    svn 设置post-commit后 报错svn: Can't convert string from 'UTF-8' to native encoding
    windows 下wamp环境3 安装php7
    windows 下wamp环境2 配置之mysql的安装
    windows 下wamp环境1 配置之apache的安装
    IE8 margin: auto 无法居中
    memcache安装
  • 原文地址:https://www.cnblogs.com/jackstrong/p/5978321.html
Copyright © 2011-2022 走看看