用Java实现一个计算器(论文版)

一、流程图

这里写图片描述

二、主要代码展示及说明:

(1)数据的输入

Scanner s = new Scanner(System.in);
            System.out.print("请输入你要运算的第一数:");
            double frist = s.nextDouble();
            System.out.print("请输入运算符号(+,-,*,/)");
            String str = s.next();
            System.out.print("请输入你要运算的第二个数:");
            double two = s.nextDouble(); 

功能解释:程序开始时,先定义一个变量,然后会有一个提示语句提示呢输入你所要计算的第一个数,不过,这里我们设定的是双精度数字,所以最后的运算结果统一都是双精度类型的数字;之后就是输入运算符了,不过,由于时间原因,我们只写了加、减、乘、除的运算,所以这里会有一句提示语句,提示你输入加、减、乘、除的运算符,如果你输入错误,那么会提示你重新输入;最后一条是你要输入的第二个数字,同样会提示,而且,如果你在输入数字的时候输入了其它的符号,这里同样会提示你重新输入。
(2)运算符的控制


         if ("+".equals(str)) {
                System.out.println(Calculator.add(frist, two));
            }else if ("-".equals(str)) {
                System.out.println(Calculator.reduce(frist, two));
            }else if ("*".equals(str)) {
                System.out.println(Calculator.multiplication(frist, two));
            }else if ("/".equals(str)) {
                if(two == 0){
                    System.out.println("除数不能为0.");
                }else {
                    System.out.println(Calculator.div(frist, two));
                }
            }else {
                System.out.println("您输入有误请重新输入!");
            }

功能解释:当输入一个与算符的时候,程序会根据if语句所判断的结果选择调用哪个函数,然后传参给你所选择的函数,所传的参数就是你先前输入的两个数。如果,你选择的是加法,那么程序会调用加法的函数,并且在函数内部进行运算,返回运算结果,随之,减法和乘法也是这样的。如果你选择的是除法,那么程序同样返回一个结果,不过在这之前,会进行一个判断,要是你的除数为0,那么这个表达式没有意义,计算器会提示你是否重新输入,如果选是的话,那么下一次的除数应该记住不要再为0了哦!
(3)选择继续运算还是退出

while(flag2){
                System.out.println("是否继续N/Y:");
                String isNext = s.next();
                if("n".equals(isNext)||"N".equals(isNext)){
                    flag1 = false;
                    flag2 = false;
                }else if ("Y".equals(isNext)||"y".equals(isNext)) {
                    flag1 = true;
                    flag2 = false;
                }else {
                    System.out.println("输入有误!请重新输入");
                    flag2 = true;
                }
            } 

功能解释:这是计算器在进行运算完成的时候都要有的选择,如果你选择的是n或者是N,那么程序结束运行,如果,你选择的是y或者是Y,那么程序继续运行,计算器会提示你输入第一个数据,即是新印的运算,而以前的运算记录还在上面,并没有被清除,方便你随时查看。不过,如果你要是选择的不是n、N、y、Y这几个字符的话,那么计算器会提示你输入有误,请重新输入,然后,你就可以重新进行选择,是否退出。

三、运行调试与分析讨论

1.加法的运算:

    //计算加法的函数
    public static double add(double i ,double j) {
        return i+j;
    }

这里写图片描述
分析:输出结果如图所示,计算的结果为110.0,为双精度型,而且,还可以在保证这次运算记录的情况下,进行下一次运算。

2.减法的运算:

    //计算减法的函数
    public static double reduce(double i , double j){
        return i-j;
    }

这里写图片描述
分析:输出的结果如图所示,减法和加法类似,结果都为双精度类型,而且,我们为了让计算的效果更佳充分的发挥,选择的例子是小数减去大数,结果为负数,很好的体现出来。

3.乘法的运算:

    //计算乘法的函数
    public static double multiplication(double i ,double j) {
        return i*j;
    }

这里写图片描述
分析:输出的结果如图所示,结果为736.0,我们将乘法的功能实现了,并且可以选择进行下一步运算。

4.除法的运算:

//计算乘法的函数
    public static double multiplication(double i ,double j) {
        return i*j;
    }

这里写图片描述
分析:输出的结果如图所示,除法能够很好的实现,但有一个问题,比如在计算过程如果除数为0,那么结果为无穷大的数,换句话说,就是除数不能为0,如果为0,那么重新输入。

四、代码详情:

package com.bin.utils;

import java.math.BigDecimal;
import java.util.Scanner;

public class Calculator {
    //计算加法的函数
    public static double add(double i ,double j) {
        return i+j;
    }

    //计算减法的函数
    public static double reduce(double i , double j){
        return i-j;
    }

    //计算乘法的函数
    public static double multiplication(double i ,double j) {
        return i*j;
    }

    //计算除法的函数
    public static double div(double i ,double j) {
        return i/j;
    }

    public static void main(String[] args) {
        boolean flag1 = true;
        while (flag1) {
            Scanner s = new Scanner(System.in);
            System.out.print("请输入你要运算的第一数:");
            double frist = s.nextDouble();
            System.out.print("请输入运算符号(+,-,*,/)");
            String str = s.next();
            System.out.print("请输入你要运算的第二个数:");
            double two = s.nextDouble();
            if ("+".equals(str)) {
                System.out.println(Calculator.add(frist, two));
            }else if ("-".equals(str)) {
                System.out.println(Calculator.reduce(frist, two));
            }else if ("*".equals(str)) {
                System.out.println(Calculator.multiplication(frist, two));
            }else if ("/".equals(str)) {
                if(two == 0){
                    System.out.println("除数不能为0.");
                }else {
                    System.out.println(Calculator.div(frist, two));
                }
            }else {
                System.out.println("您输入有误请重新输入!");
            }
            boolean flag2 = true;
            while(flag2){
                System.out.println("是否继续N/Y:");
                String isNext = s.next();
                if("n".equals(isNext)||"N".equals(isNext)){
                    flag1 = false;
                    flag2 = false;
                }else if ("Y".equals(isNext)||"y".equals(isNext)) {
                    flag1 = true;
                    flag2 = false;
                }else {
                    System.out.println("输入有误!请重新输入");
                    flag2 = true;
                }
            }

        }
    }
}
  • 7
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值