📄 nsprocess.java
字号:
import java.util.*;
import java.lang.*;
class NsProcess {
StackProcess sp=new StackProcess();
StringTokenizer st;
String s;
NsProcess(String s)
{ st=new StringTokenizer(s,"+-*/^%!\1\2\3\4\5\6\7\u0008)(");
this.s=s;}
void lastProcess()
{ int i=0; StackProcess.Union spu=new StackProcess.Union();
for(i=0;;i++)
{ if(sp.stack[i]==null) break;
if(sp.stack[i].value=='!'&&sp.stack[i-1].valuekkk!=0)
{spu=sp.stack[i];sp.stack[i]=sp.stack[i-1];
sp.stack[i-1]=spu;}
if( sp.stack[i].value=='!'&&sp.stack[i-1].value==')')
{ spu=sp.stack[i];
int j=i;
while(sp.stack[j].value!='(')
j--;
for(int k=i;k>j;k--)
{
sp.stack[k]=sp.stack[k-1];}
sp.stack[j]=spu; }
}
}
void negative()
{ for(int i=0;;i++)
{if(sp.stack[i]==null)break;
if(sp.stack[i].value=='-'&&i==0){sp.stack[i].value=8;System.out.println("TTTTTTT");continue;}
if(sp.stack[i].value=='-'&&sp.stack[i-1].value=='(')
sp.stack[i].value=8;
if(sp.stack[i].value=='-'&&sp.stack[i-1].value>41&&sp.stack[i-1].value<=47)
sp.stack[i].value=8;}
}
void process()
{ StringBuffer sb=new StringBuffer(s);
int monitor=-1,k=0;
for(int i=0;i<sb.toString().length();i++)
{ StackProcess.Union union=new StackProcess.Union();
char c=sb.charAt(i);
if(c=='-'&&i==0) {union.type=1;union.value=c;sp.push(union);continue;}
if( ((int)c<=47||(int)c>=58)&&(int)c!=46)
{ if(monitor+1==i) {
union.type=1;union.value=c;
sp.push(union);monitor=i;k++;}
else {
union.type=0;union.valuekkk=creatNumber();sp.push(union);
StackProcess.Union union1=new StackProcess.Union();
union1.type=1;union1.value=c;
sp.push(union1);monitor=i;
}
}
}
double f=0;
f=creatNumber();
if(f==0)
{;}
else{StackProcess.Union union3=new StackProcess.Union();
union3.type=0;union3.valuekkk=f;
sp.push(union3);}
negative();
lastProcess();
}
double creatNumber()
{ double i=0;
if(st.hasMoreTokens())
{
i=Double.parseDouble(st.nextToken());
System.out.println(i);
}
return i;
}
public static void main(String[] args)
{ NsProcess ns=new NsProcess("30+3!+-(500.6/6)!");
ns.process();
for(int i=0,j=0;i<12;i++){System.out.println("kkk"+(int)ns.sp.stack[i].value);System.out.println("mmm"+ns.sp.stack[i].valuekkk);}
//System.out.println(ns.sp.top);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -