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

    }

}
时间: 2024-10-11 07:10:54

java 程序,通过scanner 编写计算器的相关文章

编写运行最简单的java程序——使用记事本编写java程序

第一个java程序--使用记事本编辑 经过上篇文章的java环境搭建成功的小伙伴们可以在自己的计算机上编写属于自己的java程序了yo~ 还没有搭建环境变量的小伙伴请转移到上一篇的随笔中去完成搭建. 连接地址:http://www.cnblogs.com/hysum/p/7084380.html 现在我们可以通过使用记事本来编辑我们的第一个java小程序. 第一步 .使用记事本编辑程序代码 用记事本编写的是java的源代码文件,里面的代码就是我们平时学习的java代码.生成的文件后缀是.java

Java程序员岗位

Java程序员岗位面试题有哪些? 1.面向对象的特征有哪些方面(1)抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节.抽象包括两个方面,一是过程抽象,二是数据抽象.(2)继承:继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法.对象的一个新类可以从现有的类中派生,这个过程称为类继承.新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的

Java程序员面试题收集(6)

<!————————————————————————————基础题122道,代码题19道————————————————————————————> JAVA相关基础知识1.面向对象的特征有哪些方面1.抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节.抽象包括两个方面,一是过程抽象,二是数据抽象.2.继承:继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法

为Java程序员金三银四精心挑选的五十道面试题与答案

1.面向对象的特征有哪些方面? [基础] 答:面向对象的特征主要有以下几个方面: 1)抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节.抽象包括两个方面,一是过程抽象,二是数据抽象. 2)继承:继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法.对象的一个新类可以从现有的类中派生,这个过程称为类继承.新类继承了原始类的特性,新类称为原始类的派生类(子类),

编写高质量JAVA程序代码的建议

--------------------------------------------------------------------------------------------------- 前言:原著<改善JAVA程序的151个建议>有151个建议,我在拜读的过程根据自己的理解合并了其中的几个,并将每个建议的核心要义进行了一次纯手工提炼,以方便想阅读这本书的同行能够更快的掌握这本书的所有核心内容. -------------------------------------------

转载--编写高质量代码:改善Java程序的151个建议(第1章:JAVA开发中通用的方法和准则___建议16~20)

阅读目录 建议16:易变业务使用脚本语言编写 建议17:慎用动态编译 建议18:避免instanceof非预期结果 建议19:断言绝对不是鸡肋 建议20:不要只替换一个类 回到顶部 建议16:易变业务使用脚本语言编写 Java世界一直在遭受着异种语言的入侵,比如PHP,Ruby,Groovy.Javascript等,这些入侵者都有一个共同特征:全是同一类语言-----脚本语言,它们都是在运行期解释执行的.为什么Java这种强编译型语言会需要这些脚本语言呢?那是因为脚本语言的三大特征,如下所示:

软帝学院教你用java编写计算器(二)

软帝学院教你用java编写计算器(二) import java.awt.BorderLayout; import java.awt.GridBagLayout; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.

教你用java编写计算器(三)

教你用java编写计算器(三) import java.awt.Color; import java.awt.Dimension; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import

编写JAVA程序

一.编写JAVA程序 编写JAVA程序,输出一行文本信息:“Hello world”,选择编辑器eclipse,打开之后编写程序 1 public class Hello{ 2 3 public static void main(String[] args){ 4 System.out.println("Hello world"); 5 } 6 } 行1:开始声明一个类,类名为hello,class是JAVA的关键字,用来定义类,public为访问说明 行3:是JAVA应用程序必须包含