import ds_java.Stack2;//这是一个堆栈,由于太多在这里就没有具体发上。
public class Chen
{
String pstr1;
public Chen()
{
}
int value(String ps)//求表达式的值的方法
{
pstr1=ps;
Stack2 s2=new Stack2();
char ch;
int i=0,x,y,z=0;
while(i<pstr1.length())
{
ch=pstr1.charAt(i);
if(ch>='0'&&ch<='9')
{
z=0;
while(ch!=' ')
{
z=z*10+Integer.parseInt(ch+" ");
i++;
ch=pstr1.charAt(i);
}
s2.push(z);
}
else
{
y=s2.pop();
x=s2.pop();
switch(ch)
{
case '+': z=x+y;break;
case '-': z=x-y;break;
case '*': z=x*y;break;
case '/': z=x/y;break;
}
s2.push(z);
}
}
return(s2.pop());
}
public static void main(String[] args)
{
Chen c=new Chen();
String pstr="25779";
char[] ch1={'+','-','*','/'};
for(int i=0;i<4;i++)
for(int j=0;j<4;j++)
for(int m=0;m<4;m++)
for(int n=0;n<4;n++)
{
pstr+=ch1[i];
pstr+=ch1[j];
pstr+=ch1[m];
pstr+=ch1[n];
Integer nub=new Integer(c.value(pstr));
int nub1=nub.intValue();
if(nub1==24)//出错的地方:数字到字符的转换异常!
System.out.println(ch1[i]+ch1[j]+ch1[m]+ch1[n]);
else
System.out.println( "这样的表达式不存在!");
}
}
}
程序的意思很明显的。请高手指点一下下啊。 |