java加减乘除代码括号 乘除加减括号运算法则

java,目标是控制台实现带括号的加减乘除运算

你的括号判断很有问题, 没有谁规定不可以多个括号套起来。也没有谁规定第一个出现的“(”和最后出现的“)” 是一组括号

创新互联公司主要为客户提供服务项目涵盖了网页视觉设计、VI标志设计、营销推广、网站程序开发、HTML5响应式重庆网站建设公司移动网站建设、微商城、网站托管及成都网站维护、WEB系统开发、域名注册、国内外服务器租用、视频、平面设计、SEO优化排名。设计、前端、后端三个建站步骤的完善服务体系。一人跟踪测试的建站服务标准。已经为成都塔吊租赁行业客户提供了网站建设服务。

看清楚 a的值比b还大。 substring(a,b)  a是要比B小的

加减乘除运算(Java)

实际上这相当于javascript的eval方法,以下是该方法的java实现:

//Eval.java

import java.util.ArrayList;

import java.util.List;

import java.util.Stack;

public class Eval {

public int eval(String exp){

ListString list = infixExpToPostExp(exp);//转化成后缀表达式

return doEval(list);//真正求值

}

//遇到操作符压栈,遇到表达式从后缀表达式中弹出两个数,计算出结果,压入堆栈

private int doEval(ListString list) {

StackString stack = new StackString();

String element;

int n1,n2,result;

try{

for(int i = 0; i list.size();i++){

element = list.get(i);

if(isOperator(element)){

n1 = Integer.parseInt(stack.pop());

n2 = Integer.parseInt(stack.pop());

result = doOperate(n1,n2,element);

stack.push(new Integer(result).toString());

}else{

stack.push(element);

}

}

return Integer.parseInt(stack.pop());

}catch(RuntimeException e){

throw new IllegalExpressionException(e.getMessage());

}

}

private int doOperate(int n1, int n2, String operator) {

if(operator.equals("+"))

return n1 + n2;

else if(operator.equals("-"))

return n1 - n2;

else if(operator.equals("*"))

return n1 * n2;

else

return n1 / n2;

}

private boolean isOperator(String str){

return str.equals("+") || str.equals("-") || str.equals("*") || str.equals("/");

}

private ListString infixExpToPostExp(String exp){//将中缀表达式转化成为后缀表达式

ListString postExp = new ArrayListString();//存放转化的后缀表达式的链表

StringBuffer numBuffer = new StringBuffer();//用来保存一个数的

StackCharacter opStack = new StackCharacter();//操作符栈

char ch,preChar;

opStack.push('#');

try{

for(int i = 0; i exp.length();){

ch = exp.charAt(i);

switch(ch){

case '+':

case '-':

case '*':

case '/':

preChar = opStack.peek();

// 如果栈里面的操作符优先级比当前的大,则把栈中优先级大的都添加到后缀表达式列表中

while(priority(preChar) = priority(ch)){

postExp.add(""+preChar);

opStack.pop();

preChar = opStack.peek();

}

opStack.push(ch);

i++;

break;

case '(':

// 左括号直接压栈

opStack.push(ch);

i++;

break;

case ')':

// 右括号则直接把栈中左括号前面的弹出,并加入后缀表达式链表中

char c = opStack.pop();

while(c != '('){

postExp.add("" + c);

c = opStack.pop();

}

i++;

break;

// #号,代表表达式结束,可以直接把操作符栈中剩余的操作符全部弹出,并加入后缀表达式链表中

case '#':

char c1;

while(!opStack.isEmpty()){

c1 = opStack.pop();

if(c1 != '#')

postExp.add("" + c1);

}

i++;

break;

//过滤空白符

case ' ':

case '\t':

i++;

break;

// 数字则凑成一个整数,加入后缀表达式链表中

default:

if(Character.isDigit(ch)){

while(Character.isDigit(ch)){

numBuffer.append(ch);

ch = exp.charAt(++i);

}

postExp.add(numBuffer.toString());

numBuffer = new StringBuffer();

}else{

throw new IllegalExpressionException("illegal operator");

}

}

}

}catch(RuntimeException e){

throw new IllegalExpressionException(e.getMessage());

}

return postExp;

}

private int priority(char op){//定义优先级

switch(op){

case'+':

case'-':

return 1;

case'*':

case'/':

return 2;

case'(':

case'#':

return 0;

}

throw new IllegalExpressionException("Illegal operator");

}

}

Main.java 主函数所在类

public class Main

{

public static void main(String[] args) {

try {

InputStreamReader isr=new InputStreamReader(System.in);

BufferedReader br=new BufferedReader(isr);

String exp=br.readLine();

int result = eval.eval(exp);

System.out.println(result);

}

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

IllegalExpressionException异常类

public class IllegalExpressionException extends RuntimeException{

public IllegalExpressionException(){

}

public IllegalExpressionException(String info){

super(info);

}

}

java中怎么将字符串(带运算符号加减乘除)转换成代数算式运算

这需要写很长一段代码。

1、判断表达式中有没有括号,如果有括号,转第二步。没有括号转第三步。

2、把括号内的内容提取出来,作为一个新的表达式。转第三步

3、判断表达式中有没有乘号和除号,有转第四步。没有转第六步。

4、把乘除号和乘除号前后的数字提取出来,得到新的表达式,转第五步。

5、提取数字和符号,判断表达式是乘号还是除号,然后计算结果。返回。

6、表达式没有乘除号,有加减号。转第七步。

7、提取包含加减的表达式中的符号和数据,计算结果,返回。

就是这个道理,这里只是描述了带括号和加减乘除的表达式,如果有更多的运算符,则根据运算符优先级处理。

怎么用java编程,实现分数的加减乘除运算?

java编程实现分数的加减乘除运算的步骤如下:

1、打开eclipse,创建一个Java工程,在此工程里新建一个类;

2、在新建的类中,添加4个运算类;

3、在主方法中调用对应的方法即可完成分数的加减乘除运算了。

具体实现代码如下:

public class Demo {

public static void main(String[] args) {

System.out.println(jia(1, 2));

System.out.println(jian(1, 2));

System.out.println(cheng(1, 2));

System.out.println(chu(1, 2));

}

//加法运算

private static float jia(float x,float y) {

return x + y;

}

//减法运算

private static float jian(float x,float y) {

return x - y;

}

//乘法运算

private static float cheng(float x,float y) {

return x * y;

}

//除法运算

private static float chu(float x,float y) {

return x / y;

}

}


网站栏目:java加减乘除代码括号 乘除加减括号运算法则
标题来源:http://pwwzsj.com/article/dooopci.html