JAVA实现简单四则混合运算

JAVA实现简单四则混合运算,说明:该计算器支持实则混合运算,如 2*(3+1 )/ 4-3 *9+ 8/ 3*4- 5,则输出:-19.333332 需要说明的事括号必须是英文的。源码如下仅供学习:

运行后直接在Console里面敲然后回车即可

[1].[代码] [Java]代码 跳至 [1]

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

import

java.io.BufferedReader;

import

java.io.IOException;

import

java.io.InputStreamReader;

import

java.util.ArrayList;

public

class

Test_03 {

    

    public

static

void

main(String[] args){

        

//     
String str=" 11 12 13 56 ";

//     
String[] data=str.split("\\s");

//     
for(int i=0;i<data.length;i++){

//         
System.out.println(data[i]);

//     
}

        

        BufferedReader
reader=
null;

        InputStreamReader
inputStreamReader=
null;

//     
ArrayList<String>opt=new ArrayList<String>();

        try{

            System.out.println("请输入表达式:或直接输入#结束运算!");

            inputStreamReader=new

InputStreamReader(System.in);

            reader=new

BufferedReader(inputStreamReader);

            String
str=reader.readLine();

            while(!str.equals("#")){

                System.out.println("运算结果为:"+opt(str)+"");

                System.out.println("请输入表达式:或直接输入#结束运算!");

                str=reader.readLine();

            }

        }catch(Exception
e){

            e.printStackTrace();

        }

        if(reader!=null){

            try

{

                reader.close();

            }
catch

(IOException e) {

                e.printStackTrace();

            }

        }

    }

    

    public

static

float

opt(String s)
throws

Exception{

        if(s
==
null

||
"".equals(s.trim()))
{

            return

0f;

        }

        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=opt(s.substring(a5+
1,a6).trim());

                s=s.replace(s.substring(a5,a6+1),
String.valueOf(f));

                return

opt(s);

            }

        }

        

        if(a1!=-1){

            return

opt(s.substring(
0,a1))+opt(s.substring(a1+1,s.length()));

        }

        if(a2!=-1){

            return

opt(s.substring(
0,a2))-opt(s.substring(a2+1,s.length()));

        }

        if(a3!=-1){

            return

opt(s.substring(
0,a3))*opt(s.substring(a3+1,s.length()));

        }

        if(a4!=-1){

            return

opt(s.substring(
0,a4))/opt(s.substring(a4+1,s.length()));

        }

        return

Integer.parseInt(s.trim());

    }

}

时间: 2024-08-02 06:59:50

JAVA实现简单四则混合运算的相关文章

基于MFC的含四则混合运算的计算器

今天无意间发现win7系统的标准型计算器连最基本的四则混合运算都没做,刚刚好公司给了我一个工作任务,就是用MFC实现一个含四则混合运算的计算器. 我在网上查询资料,发现大部分只是实现了基本的加减乘除运算,而含四则混合运算的也没有能够说得清楚明白.于是我搜索四则混合运算算法,发现要实现四则混合运算,就要用到逆波兰算法,而使用逆波兰算法,就要先把算术式从中缀表达式转换为后缀表达式. 所谓中缀表达式,就是我们平常的算术式,例如:1+2-3*4/5. 而后缀表达式,就是将运算符写在操作数之后,上面算术式

第四次作业 结对编程 (四则混合运算)

一 需求分析 本次我们做的程序是数学的四则混合运算,并且增加了部分人性化的功能,接下来,我们谈谈这个程序的相关需求,此程序是一个1—10的四则混合运算,那么可以想到主要用于小学生,(ps 个人想法,不排除其他高年级的使用,因为用户可以输入任意的随机数范围),此外,本程序还可能会出现在家庭.教育机构和部分教学网站上面,因为他们可能会给学生出一些简单的数学题目,可以自由设置测试时间,题目数量等内容,而这一程序正好解决了这一个问题,我想,产品的需求必须首先知道用户需要什么,要以客户为中心.而这个产品正

软件工程学习之小学四则混合运算出题软件 Version 1.00 设计思路及感想

对于小学四则混合运算出题软件的设计,通过分析设计要求,我觉得为了这个软件在今后便于功能上的扩充,可以利用上学期所学习的<编译原理>一课中的LL1语法分析及制导翻译的算法来实现.这样做的好处有以下几点: 1. 由于LL1制导翻译是一项成熟且可靠的技术,并且其递归下降算法易于改编为算式生成算法: 2. 我们有系统的方法可以获得较复杂表达式的LL1文法,则可以方便地生成形式丰富的算式: 3.由于四则混合运算中需要考虑运算优先级的问题,那么采用LL1分析器可以很方便的实现计算表达式的功能: 4.当用户

C语言写的秒速计算四则混合运算项目

开发语言:C语言 开发工具:Visual Studio 2017 整理时间:2017年8月2日 源代码:500行: 开发方式:C语言多文件模式开发 实现功能:在文件中写入四则混合运算表达式(无论有多长...),按运行即可得出结果. 四则混合运算表达式形如: (19+67)*33-45/5+17*52+39/3+.... 意义:在实际快速计算的同时,对学习也有如下意义:对堆栈的学习应用,多多文件的学习巩固 项目演示截图: 其他C语言项目参考:

MathExamV2.0四则混合运算计算题生成器

MathExamV2.0四则混合运算计算题生成器----211606360 丁培晖 211606343 杨宇潇 一.预估与实际 PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Planning 计划 ? Estimate ? 估计这个任务需要多少时间 60 100 Development 开发 ? Analysis ? 需求分析 (包括学习新技术) 360 440 ? Design Spec ? 生成设计文档 20 20 ? D

加/减/乘/除四则混合运算(C 语言)

逆波兰表达式(也称为后缀表达式) C 语言简单实现,(也称为后缀表达式) 本示例旨在展示逆波兰表达式原理,作简单的混合运算,不作容错处理也不保证结果,若混合运算字符串中有负数等,自行调试解决 列如计算: 20.5+(100-(3+2)*8)/(8-5) - 10 后缀表达式为:20.5 100 3 2 + 8 * - 8 5 - / 10 - + C  语言代码如下: #include <stdio.h> #include <stdlib.h> #include <strin

java 四则混合运算 计算器

public class Counter { /**用递归算法,把括号内的公式算出然后递归   * @param args   */ public static void calculator (String str){   //System.out.println(str);   //装载到StringBuffer提升效率   StringBuffer cstr= new StringBuffer(str);   //用正则把算式内的剩除符号和数字分组,   Pattern p=Pattern

201574010343/201571030318《小学四则混合运算》结对项目报告

github代码地址:https://github.com/zxt555/demo2/tree/master/src 一:需求分析 1. 由计算机从题库文件中随机选择20道加减乘除混合算式,用户输入算式答案,程序检查答案是否正确,每道题正确计5分,错误不计分,20道题测试结束后给出测试总分: 2.系统随机产生一百以内的两个数进行运算选择加.减.乘.除运算. 3.系统随机产生一百以内的两个数进行运算. 4.练习时,用户从键盘输入结果,正确和错误均有提示,错误的话提示下会有正确的结果. 5. 根据实

201571030318/201574010343《小学四则混合运算》结队报告 马麒

GitHub源码地址:https://github.com/xuexibuhaoderen/SoftWareTest 需求分析 1. 由计算机从题库文件中随机选择20道加减乘除混合算式,用户输入算式答案,程序检查答案是否正确,每道题正确计5分,错误不计分,20道题测试结束后给出测试总分: 2. 题库文件可采用实验二的方式自动生成,也可以手工编辑生成,文本格式如下: (3)程序为用户提供三种进阶四则运算练习功能选择:百以内整数算式(必做).带括号算式.真分数算式练习: (4)程序允许用户进行多轮测