⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nsprocess.java

📁 此计算器是我们期末的实习作业
💻 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 + -