用java实现计算器四则运算以及混合运算

贴代码
本例测试是基于junit ,eclipse可安装对应 的java包
我用的是idea,添加插件即可

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;
public class Calculator {

    public  double add(String a, String  b) {
        double c=0;
        try {
            Integer.parseInt(a);
            Integer.parseInt(b);
           c=Integer.parseInt(a)+Integer.parseInt(b);
           System.out.println("正在计算");
        } catch (NumberFormatException e) {
            e.printStackTrace();
        }finally {
            System.out.println("请输入正确的数字");
        }
        return c;
    }

    public double substract(String a, String b) {
        double c=0;
        try {
            Integer.parseInt(a);
            Integer.parseInt(b);
            c=Integer.parseInt(a)-Integer.parseInt(b);
            System.out.println("正在计算");
        } catch (NumberFormatException e) {
            e.printStackTrace();
        }finally {
            System.out.println("请输入正确的数字");
        }
        return c;
    }

    public double multiply(String a, String b) {
        double c=0;
        try {
            Integer.parseInt(a);
            Integer.parseInt(b);
            c=Integer.parseInt(a)*Integer.parseInt(b);
            System.out.println("正在计算");
        } catch (NumberFormatException e) {
            e.printStackTrace();
        }finally {
            System.out.println("请输入正确的数字");
        }
        return c;
    }

    public double divide(String a, String b) {
        double c=0;
        try {
            Integer.parseInt(a);
            Integer.parseInt(b);
            c=Integer.parseInt(a)/(double)Integer.parseInt(b);
            System.out.println("正在计算");
        } catch (NumberFormatException e) {
            e.printStackTrace();
        }finally {
            System.out.println("请输入正确的数字");
        }
        return c;
    }

    public  float mixOpt(String s) throws Exception {
            if((s.equals("")||s.equals(null)))
                throw new Exception("请输入正确的表达式");
           if (s.endsWith("+")||s.endsWith("-")||s.endsWith("*")||s.endsWith("/")){
               throw new Exception("请输入正确的表达式");
           }
        if (s == null || "".equals(s.trim())) {  //trim用于删除字符串左右两边的空格
            return 0f;  //方法的返回类型为float,0f代表单精度的0.
        }
        //indexOf 方法返回一个整数值,指出 String 对象内子字符串的开始位置。如果没有找到子字符串,则返回-1。
        int a1 = s.indexOf("+");
        int a2 = s.indexOf("-");
        int a3 = s.indexOf("*");
        int a4 = s.indexOf("/");
        int a5 = s.indexOf("(");
        if (a1 == -1 && a2 == -1 && a3 == -1 && a4 == -1) {

            if (s.trim() == null || "".equals(s.trim())) {
                throw new Exception("operate error");
            }
            return Float.parseFloat(s.trim());
        }

        if (a5 != -1) {
            int a6 = s.indexOf(")");
            if (a6 == -1) {
                throw new Exception("括号不匹配");
            } else {

                float f = mixOpt(s.substring(a5 + 1, a6).trim());
                s = s.replace(s.substring(a5, a6 + 1), String.valueOf(f)); //使用第二个参数替换第一个参数
                //String.valueOf(float f) : 将 float 变量 f 转换成字符串
                return mixOpt(s);
            }
        }

        if (a1 != -1) {
            return mixOpt(s.substring(0, a1)) + mixOpt(s.substring(a1 + 1, s.length()));
        }
        if (a2 != -1) {
            return mixOpt(s.substring(0, a2)) - mixOpt(s.substring(a2 + 1, s.length()));
        }
        if (a3 != -1) {
            return mixOpt(s.substring(0, a3)) * mixOpt(s.substring(a3 + 1, s.length()));
        }
        if (a4 != -1) {
            return mixOpt(s.substring(0, a4)) / mixOpt(s.substring(a4 + 1, s.length()));
        }
        return Integer.parseInt(s.trim());
    }
}


测试类

import org.junit.jupiter.api.Test;

import java.util.Scanner;

import static org.junit.jupiter.api.Assertions.*;

class CalculatorTest {

    @Test
    void add( ) {
        System.out.println("请输入两个要运算的数字");
        String a="9";
        String  b="6";
     double c=  new Calculator().add(a,b);
        System.out.println(c);
        System.out.println("新的测试用例");
        a="a";
        b="9";
        c=  new Calculator().add(a,b);
        System.out.println(c);
    }

    @Test
    void substract() {
        System.out.println("请输入两个要运算的数字");
        String a="9";
        String  b="6";
        double c=  new Calculator().substract(a,b);
        System.out.println(c);
        System.out.println("新的测试用例");
        a="a";
        b="9";
        c=  new Calculator().add(a,b);
        System.out.println(c);
    }

    @Test
    void multiply() {
        System.out.println("请输入两个要运算的数字");
        String a="9";
        String  b="6";
        double c=  new Calculator().multiply(a,b);
        System.out.println(c);
        System.out.println("新的测试用例");
        a="a";
        b="9";
        c=  new Calculator().add(a,b);
        System.out.println(c);
    }

    @Test
    void divide() {
        System.out.println("请输入两个要运算的数字");
        String a="9";
        String  b="6";
        double c=  new Calculator().divide(a,b);
        System.out.println(c);
        System.out.println("新的测试用例");
        a="a";
        b="9";
        c=  new Calculator().add(a,b);
        System.out.println(c);
    }

    @Test
    void mixOpt() throws Exception {
        String s="6+7-4*2";
        double c=new Calculator().mixOpt(s);
        System.out.println(c);
        System.out.println();
         s="65+";
         c=new Calculator().mixOpt(s);
        System.out.println(c);
    }
}
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
### 回答1: 我们可以使用if语句或switch语句来实现一个简单的加、减、乘、除四则运算计算器使用if语句时,我们可以用条件判断判断输入的运算符是哪一个,然后根据不同的运算符进行相应的计算。使用switch语句时,我们可以根据输入的运算符,在不同的case中分别执行相应的计算。无论是if还是switch语句,我们都可以使用嵌套语句的方式实现多个运算符的混合嵌套运算。 ### 回答2: 在使用if语句与switch语句的混合嵌套之前,我们需要首先了解两个概念:运算符和操作数。 运算符是用来表示运算符号的符号,比如加号(+)、减号(-)、乘号(*)和除号(/)。而操作数则是用来进行运算的数字或变量。 一个简单的加、减、乘、除四则运算计算器,需要基于两个操作数和一个运算符来计算结果。因此,我们需要使用if语句或switch语句来判断用户输入的运算符,并进行相应的计算。 下面是一个使用if语句与switch语句的混合嵌套实现加、减、乘、除四则运算计算器的示例代码: ```java import java.util.Scanner; public class Calculator { public static void main(String[] args){ Scanner input = new Scanner(System.in); double num1, num2, result; String operator; System.out.println("欢迎使用四则运算计算器!"); System.out.print("请输入第一个数字:"); num1 = input.nextDouble(); System.out.print("请输入运算符:"); operator = input.next(); System.out.print("请输入第二个数字:"); num2 = input.nextDouble(); if(operator.equals("+")) { result = num1 + num2; System.out.println(num1 + " " + operator + " " + num2 + " = " + result); } else if(operator.equals("-")) { result = num1 - num2; System.out.println(num1 + " " + operator + " " + num2 + " = " + result); } else if(operator.equals("*")) { result = num1 * num2; System.out.println(num1 + " " + operator + " " + num2 + " = " + result); } else if(operator.equals("/")) { // 进行除法运算时需要进行除数是否为0的判断 if(num2 == 0) { System.out.println("除数不能为0,请重新输入!"); } else { result = num1 / num2; System.out.println(num1 + " " + operator + " " + num2 + " = " + result); } } else { System.out.println("输入的运算符有误,请重新输入!"); } } } ``` 当用户运行程序后,程序会提示用户输入第一个数字、运算符和第二个数字。接着,程序会判断用户输入的运算符是哪一个,然后进行相应的计算,并输出结果。 在整个程序中,我们使用了if语句进行除法运算时除数是否为0的判断,并使用了switch语句进行基于运算符的计算。 需要注意的是,这个简单的计算器只能进行两个数之间的基本运算,无法处理更复杂的计算。如果需要处理更复杂的计算,我们需要使用更多的if语句或switch语句来处理更多的情况。 ### 回答3: 为了实现一个简单的加、减、乘、除四则运算计算器,我们可以将if语句和switch语句结合起来进行混合嵌套。在这里,我们需要读取用户输入的两个数以及运算符,并根据运算符执行相应的计算操作。 首先,我们需要通过Scanner读取用户输入的数据,例如: ``` Scanner input = new Scanner(System.in); System.out.print("请输入第一个数:"); double num1 = input.nextDouble(); System.out.print("请输入第二个数:"); double num2 = input.nextDouble(); System.out.print("请输入运算符:"); char operator = input.next().charAt(0); ``` 然后,我们需要判断用户输入的运算符,并执行相应的计算操作。我们可以首先使用switch语句来判断运算符: ``` switch (operator) { case '+': //执行加法操作 break; case '-': //执行减法操作 break; case '*': //执行乘法操作 break; case '/': //执行除法操作 break; default: System.out.println("错误的运算符!"); break; } ``` 在每个case分支中,我们可以使用if语句来判断用户输入的数是否合法,例如: ``` switch (operator) { case '+': if (num1 >= Double.MAX_VALUE - num2) { System.out.println("数值溢出!"); } else { double result = num1 + num2; System.out.println("计算结果为:" + result); } break; case '-': if (num1 <= Double.MIN_VALUE + num2) { System.out.println("数值溢出!"); } else { double result = num1 - num2; System.out.println("计算结果为:" + result); } break; case '*': if (num1 == 0 || num2 == 0) { System.out.println("除数不能为0!"); } else { double result = num1 * num2; System.out.println("计算结果为:" + result); } break; case '/': if (num1 == 0 || num2 == 0) { System.out.println("除数不能为0!"); } else { double result = num1 / num2; System.out.println("计算结果为:" + result); } break; default: System.out.println("错误的运算符!"); break; } ``` 在以上代码中,我们使用了if语句来判断运算结果是否会导致数值溢出,以及除数是否为0。如果数值溢出或除数为0,则输出相应的错误信息。 综上所述,我们可以通过混合嵌套的if语句和switch语句来实现一个简单的加、减、乘、除四则运算计算器
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凌晨里的无聊人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值