`

计算器模拟程序

    博客分类:
  • java
 
阅读更多
package com.xianfengshangtai.interview;

/**
 * 本程序是一个简单的计算器模拟程序。对任给的正确四则元算表达式,程序计算结果值并输出。
 * 表达式中操作数为无符号整数,运行符为+,-,*,/,圆括号按常规配对,表达式以字符串'='结束 
 *
 */
public class Problem18_21 {
	
	public static void main(String[] args) {
		int value ;
		
		Calculator calcula = new Calculator();
		System.out.println("Please input an expression : ");
		calcula.getChar();
		while(calcula.getCurChar()!='='){
			value = calcula.calc();
			String x = "The result is : "+value;
			System.out.println(x);
			System.out.println("Please input an expression :");
			calcula.getChar();
		}
		
	}

}



package com.xianfengshangtai.interview;


public class Calculator {

	private static char m_aOpChrSet [] = {'+','-','*','/','(',')','=','\0'};

	private static char m_aAllChrSet [] = {'+','-','*','/','(',')','=','0',
		'1','2','3','4','5','6','7','8','9','0','\0'};

	private int m_nNum ;//用户保存输入的数字

	private int m_nCurChr;//用户保存输入的单个字符

	public int getCurChar(){
		return m_nCurChr;
	}

	/**
	 * 
	 * 得到一个合法的输入,包含在m_aAllChrSet中,但不是'\0'的字符
	 */
	public int getChar(){
		int i;
		while(true){
			try{
				m_nCurChr = System.in.read();
				if(m_nCurChr==13||m_nCurChr==10){//如果在键盘上敲入的换行或者回车就重新输入
					continue;
				}
			}catch (Exception e) {
				System.out.println("IO error!");
			}
			if(m_nCurChr==-1){
				return -1;
			}
			//如果输入的字符不在m_aAllChrSet就重新输入,直到i<m_aAllChrSet.length成立
			for(i=0;m_aAllChrSet[i]!='\0'&&m_nCurChr!=m_aAllChrSet[i];i++){
				;
			}
			if(i<m_aAllChrSet.length){
				break;
			}
		}

		return m_nCurChr;
	}

	public int calc(){
		int x1;
		int x2;
		int x3;
		int op1;
		int op2;
		int i = getId();

		/**
		 * x1为操作数
		 */
		if(i==4){
			x1 = calc();
		}else{
			x1 = m_nNum;
		}

		op1 = getId();
		/**
		 * op1为反括号或者等号
		 */
		if(op1>=5){
			return x1;
		}
		i = getId();
		/**
		 * x2为操作数
		 */
		if(i==4){
			x2 = calc();
		}else{
			x2 = m_nNum;
		}

		op2 = getId();

		/**
		 * 反括号时要返回
		 */
		while(op2>=0&&op2<5){
			//while(_op2>=0&&op2<5______P18____)

			i = getId();
			if(i==4){
				x3 = calc();
			}else{
				x3 = m_nNum;
			}
			/**
			 * 如果op1为+或者-并且op2为*或者/
			 */
			if((op1/2==0)&&(op2/2==1)){
				x2 = operate(op2,x2,x3);
			}else{
				x1 = operate(op1, x1, x2);
				//__________P19_______
				x2 = x3;
				op1 = op2;
				//__________P20_______
			}
			op2 = getId();

		}

		return operate(op1, x1, x2);
		//return _______P21__________
	}

	private int getId(){
		int i;
		/**
		 * 获取输入的操作数
		 */
		if(m_nCurChr>='0'&&m_nCurChr<='9'){
			for(m_nNum=0;m_nCurChr>='0'&&m_nCurChr<='9';getChar()){
				m_nNum = m_nNum*10+(m_nCurChr-'0');
				//m_nNum = _________________________ 
			}
			return -1;
		}else{
			/**
			 * 获取输入的操作符
			 */
			for(i = 0;m_aOpChrSet[i]!='\0';i++){
				if(m_aOpChrSet[i]==m_nCurChr){
					break;
				}
			}
			/**
			 * 如果没有输入'=',就一直输入
			 */
			if(i<=5){
				getChar();
			}
			return i;
		}
	}

	private int operate(int op_id,int num1,int num2){
		int ret = 0;
		switch(op_id){
			case 0:      ret = num1 + num2; break;
			case 1:      ret = num1 - num2; break;
			case 2:      ret = num1 * num2; break;
			case 3:      ret = num1 / num2; break;
			default : break;
		}
		return ret;
	}

}



运算结果:
Please input an expression : 
1+2*3+(4*6-5)*6-9=
The result is : 112
Please input an expression :
分享到:
评论

相关推荐

    计算器模拟程序java

    ### 计算器模拟程序Java知识点解析 #### 一、项目概述 本项目是一个基于Java的简单计算器模拟程序。该程序旨在通过图形用户界面(GUI)实现整数的基本四则运算(加、减、乘、除)。根据描述,程序应该能够提供一个...

    Java 计算器模拟程序

    Java 计算器模拟程序 在本次大作业中,我们设计并实现了一个 Java 计算器模拟程序,旨在模拟 Windows2000/xp 系统中的“计算器”工具。该程序不仅具有普通的计算功能,还具有显示计算过程和保存计算过程的功能。...

    卡西欧工程计算器模拟程序 (4套)

    卡西欧工程计算器模拟程序是针对专业学习和工程计算需求设计的软件工具,它们能够模拟真实的卡西欧计算器,如fx-cg20、fx-9860GII、fx-9750GII以及classpad330等型号。这些模拟器提供了与实体计算器相同的功能和界面...

    Java计算器课程设计---计算器模拟程序.doc

    【Java计算器课程设计---计算器模拟程序】 在Java编程学习中,进行计算器模拟程序的设计是一项常见的课程设计任务,它旨在帮助学生深入理解面向对象编程的概念、控制流、数据处理以及用户界面设计。本报告将详细...

    fx-cg20. classpad330、FX9750GII、FX9860GII卡西欧计算器模拟程序

    卡西欧计算器模拟程序是为方便用户在个人电脑上模拟使用特定型号的卡西欧计算器而设计的应用软件。这些模拟器允许用户在没有物理计算器的情况下进行计算操作,特别是在需要复杂数学计算、图形绘制或者编程功能时,...

    简单的计算器模拟程序的设计与实现

    对任意给定的正确四则运算表达式,程序计算其结果值并输出。程序无需查错功能,假定所输入的都是正确的四则运算表达式,并且表达式中运算分量均为无正负号整数,运算符为 +、-、*、/,表达式以字符 "=" 结束。

    用JAVA编写计算器程序(模拟Windows计算器)

    ### 使用Java编写的计算器程序(模拟Windows计算器) #### 一、项目概述 本文档介绍了一个使用Java语言编写的简易计算器程序,该程序旨在模仿Windows系统的内置计算器功能。通过本项目,用户可以执行基本的数学...

    汇编简单的计算器模拟程序设计与实现

    程序无需查错功能,所输入的都是正确的四则运算表达式,并且表达式中运算分量均为无正负号整数,运算符为+、-、*、/,表达式以字符"="结束。 程序应有操作提示、输入和输出,界面追求友好,最好是菜单式的界面。

    java做的模拟计算器程序

    java做的计算器程序,模拟微软的计算器部分功能。

    Java实战项目:计算器应用程序 - 实现基本的数学运算功能

    在这个Java实战项目中,我们将构建一个简单的计算器应用程序,利用Java Swing库来创建用户界面,并实现基本的数学运算功能。以下是一些关键知识点: 1. **Java Swing库**:Java Swing是Java Foundation Classes ...

    Java计算器课程设计---计算器模拟程序.docx

    Java计算器课程设计是一个常见的计算机科学课程项目,旨在帮助学生深入理解和掌握Java编程语言的基本概念,如类、对象、继承、接口、异常处理等,并通过实际操作来锻炼他们的编程技巧。在这个项目中,学生们通常需要...

    Java编写的仿windows自带计算器程序(源代码)

    用Java编写的仿windows自带计算器程序的源代码,可用任何文本编辑器打开。 从界面到功能80%与windows计算器程序一致,适合GUI编程初学者学习。 技术特点:OOP思想,MVC,内部类。

    基于GUI设计的简单计算器.txt

    在虚拟机上GUI设计的小计算器界面,有简单的计算功能(仅能算10以内的加减乘除哦,&gt;10也会计算不出,因为用的ASCll输出),没有仔细写功能,如果有时间会补上

    多功能计算器 gui界面 加减乘除

    这个项目旨在设计一个计算器程序,它不仅支持基本的加、减、乘、除运算,还增加了高级功能如开方、清除和求倒数。下面将详细阐述这些知识点。 首先,我们需要理解GUI的基础。GUI是一种通过图标、窗口和控件等可视化...

    c51计算器模拟_isis.rar

    本项目名为“c51计算器模拟_isis.rar”,它包含了一个使用C51语言编写的计算器模拟程序以及相关的硬件模拟电路图。这个项目特别之处在于它依赖于ISIS Professional软件,这是一个广泛使用的电路设计与仿真工具,可以...

    Java课程设计——计算器

    在本Java课程设计项目中,我们关注的主题是创建一个计算器应用程序。这个项目旨在帮助学习者深入理解Java编程语言,特别是涉及到用户界面设计、事件处理、控制流以及算法实现等核心概念。通过构建一个计算器,我们...

    运用C#设计计算器应用程序

    这个计算器模拟了Windows操作系统中常见的计算器界面和交互逻辑,旨在提供用户友好的计算体验。 首先,我们需要了解C#的基础知识,它是Microsoft开发的一种面向对象的编程语言,广泛用于构建桌面应用、Web应用以及...

    用C++写的模拟计算器程序

    模拟计算器的应用程序。 数据结构的课程设计 。

Global site tag (gtag.js) - Google Analytics