62,614
社区成员
发帖
与我相关
我的任务
分享
import java.util.*;
public class Caculate
{
/**
* @param args
*/
double operator1=0,operator2=0,result=0;
Stack<Character> stack;
public Caculate()
{
stack=new Stack<Character>();
}
public double caculate(String inputString )
{
char ch;
for(int i=0;i<inputString.length();i++)
{
ch=inputString.charAt(i);
if(Character.isDigit(ch))
{
stack.push(ch);
}
else if(ch==' ') break;
else //ch为操作符
{
if(stack.isEmpty())
{
System.out.println("栈空!");
}
else operator1=(double)stack.pop();
if(stack.isEmpty())
{
System.out.println("栈空!");
}
else operator2=(double)stack.pop();
result=getresult(operator1,operator2,ch);
stack.push((char)result);
}
}
return (double)stack.pop();//这里提示错误:at java.util.Stack.pop(Unknown Source)
}
public double getresult(double x,double y,char ch1)
{
switch (ch1)
{
case '+':
result=x+y;
break;
case '-':
result=y-x;
break;
case '*':
result=x*y;
break;
case '/':
result=y/x;
break;
default:
result=0;
break;
}
return result;
}
public static void main(String[] args)
{
Caculate ca =new Caculate();
Trans tr=new Trans();
double jieguo=0;
try
{
String pexpression="3 5 + 6 * 2 4 * -";
System.out.println("波兰表达式: "+pexpression);
jieguo=ca.caculate(poleanexpression);
System.out.println("(3+5)*6-2*4="+jieguo);
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
import java.util.*;
public class Caculate
{
/**
* @param args
*/
double operator1=0,operator2=0,result=0;
Stack<Character> stack;
public Caculate()
{
stack=new Stack<Character>();
}
public double caculate(String inputString )
{
char ch;
for(int i=0;i<inputString.length();i++)
{
ch=inputString.charAt(i);
if(Character.isDigit(ch))
{
stack.push(ch);
}
else if(ch==' ') break;
else //ch为操作符
{
if(stack.isEmpty())
{
System.out.println("栈空!");
}
else operator1=(double)stack.pop();
if(stack.isEmpty())
{
System.out.println("栈空!");
}
else operator2=(double)stack.pop();
result=getresult(operator1,operator2,ch);
stack.push((char)result);
}
}
return (double)stack.pop();//这里提示错误:at java.util.Stack.pop(Unknown Source)
}
public double getresult(double x,double y,char ch1)
{
switch (ch1)
{
case '+':
result=x+y;
break;
case '-':
result=y-x;
break;
case '*':
result=x*y;
break;
case '/':
result=y/x;
break;
default:
result=0;
break;
}
return result;
}
public static void main(String[] args)
{
Caculate ca =new Caculate();
// Trans tr=new Trans();
double jieguo=0;
try
{
String pexpression="3 5 + 6 * 2 4 * -";
System.out.println("波兰表达式: "+pexpression);
jieguo=ca.caculate(pexpression);
System.out.println("(3+5)*6-2*4="+jieguo);
}
catch (Exception e)
{
e.printStackTrace();
}
}
}