`
mushme
  • 浏览: 793005 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

按照顺序四则运算

 
阅读更多
package test;

import java.util.Scanner;

/**
 * 
 * 2017年4月22日
 * 
9 1 - 4 / 4 - 1 * 2
5 9 + 2 * 5
5 5 * -2 + 2
13 9 * ( 7 + 3 ) / ( 2 + 2 )

 #1 -4
 #2 55
 #3 -8
 #4 22
 */
public class Solution05 {
	static boolean logger=false;
	public static void main(String[] args) {
		//String str="9 1 - 4 / 4 - 1 * 2";
		//System.out.println(process("9 * ( 7 + 3 ) / ( 2 + 2 )"));
		
		Scanner sc=new Scanner(System.in);
		int test_case=4;
		int result[]=new int[test_case];
		for(int t=0;t<test_case;t++){
			int size=sc.nextInt();
			String str=sc.nextLine();
			result[t]=process(str);
		}
		for(int t=0;t<test_case;t++){
			System.out.println("#"+(t+1)+" "+result[t]);
			
		}
		sc.close();
	}
	
	
	public static int process(String str){
		while(str.indexOf("(") >-1){//有括号
			
			int startIndex=str.indexOf("(");//找到括号的开始
			int endIndex=str.indexOf(")");//找到括号的结束
			if(logger) System.out.println(str+" => "+startIndex+ " "+endIndex );
			
			
			String frontString=str.substring(0,startIndex);
			String middleString=str.substring(startIndex+2, endIndex-1);//开始要跳过左括号和空格,所以要加2,结束不需要括号,所以要减1
			String endString=str.substring(endIndex+1,str.length());//结束要从右括号后+1
			
			if(logger) System.out.println(middleString);
			str=frontString+processPlain(middleString)+endString;
		}
		return processPlain(str);
	}
	
	/**
	 * 只处理不带括号的
	 * @param str
	 * @return
	 */
	public static int processPlain(String str){
		str=str.trim();
		String[] strArray=str.split(" ");
		double result=0;
		for(int i=0;i<strArray.length;i=i+2){//每次接收两个
			
			String sope;//操作符
			double snum;//操作后紧跟的数字
			if(i==0){
				sope="+";
				snum=Double.parseDouble(strArray[i]);
				i--;//第一个不要操作符,要回退下
				
			}else{
				sope=strArray[i];
				snum=Double.parseDouble(strArray[i+1]);
			}
			result=operate(result,sope,snum);
		}
		
		return (int)result;
	}

	private static double operate(double result, String sope, double snum) {
		if("+".equals(sope)){
			result=result+snum;
		}else if("-".equals(sope)){
			result=result-snum;
		}else if("*".equals(sope)){
			result=result*snum;
		}else if("/".equals(sope)){
			result=result/snum;
		}
		result=Math.floor(result);
		return result;
	}

}

分享到:
评论

相关推荐

    栈的四则运算实现及详解

    ### 栈的四则运算实现及详解 #### 一、引言 在计算机科学中,栈是一种非常重要的数据结构,其遵循后进先出(LIFO, Last In First Out)的原则。栈通常用于解决需要“回溯”的问题,例如函数调用栈、括号匹配等问题...

    四则运算练习题含答案.docx

    5. 没有括号的四则运算遵循从左到右的顺序,这是基础的计算规则。 6. 除法算式中,除数不能为0,因为除以0没有定义。 7. 包含括号的表达式如[486+(328-114)]×3,首先执行括号内的运算,然后加法,最后乘法。 8...

    编译原理——简单的四则运算

    对于四则运算,这通常涉及到解析表达式的顺序,如先乘除后加减,以及处理括号内的优先级。这个阶段可能使用上下文无关文法(Context-Free Grammar, CFG)来描述语言的结构,并应用如LL(1)或LR(1)等解析技术。 3. **...

    小学生 四则运算 测试软件

    在此背景下,"小学生四则运算测试软件"应运而生,为小学生的数学学习提供了新的思路和工具。该软件基于C#编程语言开发,不仅具备高度的自定义性和易用性,而且能够根据学生的学习进度和能力提供个性化的练习,是一种...

    四则运算计算器

    【四则运算计算器】是一个基于VB(Visual Basic)开发的简单计算器程序,它实现了基本的数学四则运算功能,即加法、减法、乘法和除法。VB是一种可视化的编程环境,由微软公司推出,它使得编程过程更为直观和易学,...

    易语言连续四则运算

    总的来说,易语言连续四则运算源码的核心是构建一个能够正确处理各种四则运算表达式的算法,这不仅涉及到基本的算术运算,还包括对运算顺序的理解和控制。通过学习和实践,你可以熟练掌握这一技能,并将其应用到更...

    数据结构的作业 实现四则运算的代码

    在数据结构的学习中,我们经常会遇到编程作业,这次的任务是实现四则运算的代码。四则运算,即加法、减法、乘法和除法,是基础数学运算,也是计算机程序处理数值的基础。在实际编程中,这些运算通常通过编程语言内置...

    四则运算基础应用

    四则运算,即加法、减法、乘法和除法,是数学运算的基础,也是我们在日常生活和工作中解决计算问题的核心工具。对于计算机科学来说,四则运算在编程语言中同样占据着至关重要的地位,是计算机执行算法和处理数据的...

    解析四则运算

    标题“解析四则运算”可能是指探讨编程语言中如何实现基本的数学运算,如加法、减法、乘法和除法。这类话题通常与计算机科学的基础知识有关,特别是编程语言的设计和解释器的工作原理。在本文中,我们将深入探讨四则...

    C语言四则运算计算器

    在这个计算器中,顺序栈用于存储数字,当遇到操作符时,栈会将当前的数字弹出,与栈顶的前一个数字进行相应的四则运算,然后将结果压回栈中。 ### 3. 四则运算 计算器的核心是解析和执行四则运算。在这个项目中,...

    四则运算解析器(字符串)

    四则运算解析器是一种计算机程序,它能够接收包含加、减、乘、除等四则运算符的字符串表达式,并将其转化为可执行的计算过程。这个解析器通常用于解决基础的数学问题,对于编程初学者来说,理解并实现这样一个解析器...

    数据结构之C++四则运算(自己写的堆栈)

    堆栈是其中一种基本的数据结构,具有简单的插入和删除操作(压栈和弹栈),这使得它非常适合处理需要按照特定顺序访问元素的情况,如四则运算的求值。 “课程设计”通常是指在大学课程中,学生需要完成的实际项目,...

    fpga实现浮点数加减乘除四则运算

    在 FPGA(Field-Programmable Gate Array)设计中,实现浮点数的加减乘除四则运算是一项挑战性的工作,因为浮点数运算涉及到复杂的数值处理和精度控制。这里我们将详细探讨根据IEEE754浮点数标准进行四则运算的原理...

    长整数四则运算

    根据给定的信息,本文将详细解释“长整数四则运算”的相关知识点,包括其在C/C++中的实现原理及具体应用。 ### 长整数四则运算概述 长整数四则运算是指当整数超出常规整型变量(如`int`或`long`)所能表示的最大...

    四则运算表达式计算器

    四则运算表达式计算器是一种能够处理加法、减法、乘法和除法的计算工具。在编程领域,实现这样的计算器通常涉及到解析表达式、计算数值以及处理可能的错误情况等多个方面。以下是对这个主题的详细说明: 1. **...

    四则运算调试 C++

    在编程领域,四则运算调试是程序开发过程中一个常见的任务,尤其在C++这样的静态类型语言中。C++提供了丰富的运算符支持基本的数学计算,包括加法(+)、减法(-)、乘法(*)和除法(/)。然而,由于C++的特性,...

    C#四则运算

    在C#中实现四则运算是一项基础但至关重要的任务,这通常涉及到解析用户输入的字符串形式的运算式子,并进行计算。在本教程中,我们将深入探讨如何在C#中处理四则运算,包括加法、减法、乘法和除法。 首先,我们需要...

    四则运算器源代码下载

    在编程领域,实现一个四则运算器是学习基础算法和数据结构的重要步骤。这个源代码下载提供了这样一个工具,能够处理包括括号在内的复杂数学表达式。四则运算器的核心是解析表达式、计算优先级以及处理括号内的运算。...

    四年级下册数学四则运算PPT教案.pptx

    教材编写特色体现在将解决问题与四则运算顺序的梳理相结合,提供情境和合作交流的机会。教材内容按照同级混合运算、不同级混合运算、带小括号的运算等步骤展开,并与实际问题相结合,以便学生更好地理解和应用运算...

    人工智能四则运算手写体识别训练模型

    本文将深入探讨一款专门针对四则运算手写体进行识别训练的人工智能模型。 首先,我们要理解该模型的核心任务是处理图像数据,并实现对数字与运算符号的精确识别。这一过程涉及到复杂的图像处理和模式识别技术。手写...

Global site tag (gtag.js) - Google Analytics