java实现带括号的加减乘除四则运算

更新时间:2023-07-27 08:17:43 阅读: 评论:0

java实现带括号的加减乘除四则运算package d;
芹菜水饺import java.util.HashMap;
import java.util.Map;
import java.util.Stack;
public class A {
public static Map pro=new HashMap();
public static void init()
{
pro.put('+', 1);
pro.put('-', 1);
pro.put('*', 2);
pro.put('/', 2);
}
public static int getIndex(String str)
{
int index1=(str.indexOf('+')==-1?str.length():str.indexOf('+'));
int index2=(str.indexOf('-')==-1?str.length():str.indexOf('-'));
int index3=(str.indexOf('*')==-1?str.length():str.indexOf('*'));
int index4=(str.indexOf('/')==-1?str.length():str.indexOf('/'));
int index=index1<index2?index1:index2;
index=index<index3?index:index3;
index=index<index4?index:index4;
休闲食品市场调查return index;
}
public static double cal(char op,double num1,double num2)
{
switch(op)
{
ca '+':
return num1+num2;
ca '-':
return num1-num2;
ca '*':
return num1*num2;
default:
return num1/num2;
}
}
public static double fun1(String str)
男人留胡子{
init();
Stack st1=new Stack();
Stack st2=new Stack();
int fop=0;
while(str.length()>0)
{
int index=getIndex(str);
st1.push(Double.parDouble(str.substring(0,index)));
if(index!=str.length())
{
char op=str.charAt(index);
str=str.substring(index+1);
while(true)
{
if(((op)>fop)
{
st2.push(op);
fop=((op);
break;
}
el
{
double num2= (double) st1.pop();
double num1=(double) st1.pop();
double result=cal((char)st2.pop(),num1,num2); st1.push(result);
if(st2.size()==0)
{
st2.push(op);
fop=((op);
break;
}
char cop=(char) st2.pop();
fop=((cop);
st2.push(cop);
}
}
}
el
湖南师范大学录取分数线
芽成语{
break;
}史记名句
}
while(st2.size()!=0)
{
double num2=(double) st1.pop();
送老婆生日礼物double num1=(double) st1.pop();
char op=(char) st2.pop();
st1.push(cal(op,num1,num2));
}
double result=(double) st1.pop();
return result;
}
public static double fun2(String str)
{
严谨的意思while(str.indexOf('(')!=-1)
{
int left=0;
int right=str.length();
char op;
for(int i=0;i<str.length();i++)
{
if(str.charAt(i)=='(')
{
left=i;
}
if(str.charAt(i)==')')
{
right=i;
break;
}
}
str=str.substring(0,left)+fun1(str.substring(left+1,right))+str.substring(right+1); }
return fun1(str);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
String str="1.0*4*5/2+2*3+4+5-4+3*2";
String str1="((1+2*(3+4*(2+3)))+2*(3+5))*(3+4)-33+5";
double result=fun2(str1);
System.out.println(result);
}
}

本文发布于:2023-07-27 08:17:43,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/1098446.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:食品市场   括号   芹菜
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图