📄 zjmain.java
字号:
import java.io.*;
public class ZJMain {
char []strt ;
private static int max=100;
private static char []ex = new char [max];
private static char [][]sy = new char [max][max];
char []str=new char [max];
char []stack=new char [max];
public ZJMain(String str) {
char []str1 = str.toCharArray();
strt = str1;
for(int i = 0; i< str1.length; i++) {
this.str[i] = str1[i];
}
}
String getResult() {
String sb = new String(ex);
return sb;
}
public void trans() throws IOException
{
char ch;
int sum,j,t,k=0,top=0;//
int i=0; //计数器
sum=i; //数组长度,即表达式长度
t=1;
i=0;
ch=str[i];
i++;
while(ch!='#'&& i <= strt.length)
{
switch(ch) //比较算符优先级
{
case '(': top++;
stack[top]=ch;
break;
case ')': while(stack[top]!='(')
{
ex[t]=stack[top]; //出栈
top--;
t++;
}
top--;
break;
case '+':
case '-': while(top!=0&&stack[top]!='(')
{
ex[t]=stack[top];
top--;
t++;
}
top++;
stack[top]=ch;
break;
case '*':
case '/': while(stack[top]=='*'||stack[top]=='/')
{
ex[t]=stack[top];
top--;
t++;
}
top++;
stack[top]=ch;break;
case ' ': break;
default: while(ch>='0'&&ch<='z')
{
ex[t]=ch;
t++;
ch=str[i];
i++;
}
i--;
ex[t]=' ';
t++;
}
ch=str[i];
i++;
}
while(top!=0)
if(stack[top]!='(')
{
ex[t]=stack[top];
t++;
top--;
}
else
{
System.out.println("error");
top--;
System.exit(0);
}
ex[t]='#';
for(j=1;j<t;j++)
{
if(ex[j]<'0'&&ex[j]>'z')
{
k++;
sy[k][1]=ex[j];
}
}
System.out.println("\n原表达式是:");
for(j=1;j<sum;j++)
System.out.print(str[j]);
System.out.println("\n逆波兰式是:");
for(j=1;j<t;j++)
System.out.print(ex[j]);
// System.out.println("\n三元式是:");
//for(k=0;k<t;k++)
// for()
}
/*
public static void main(String[] args) throws IOException {
ZJMain z = new ZJMain("5+7*9+15");
z.trans();
}
*/
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -