📄 complexop.java
字号:
import java.io.*;
class complex
{
float fact=0,virtual=0;
}
public class complexop
{
public complex operate1(complex com1,complex com2)
{
com1.fact=com1.fact+com2.fact;
com1.virtual=com1.virtual+com2.virtual;
return com1;
}
public complex operate2(complex com1,complex com2)
{
com1.fact=com1.fact-com2.fact;
com1.virtual=com1.virtual-com2.virtual;
return com1;
}
public complex operate3(complex com1,complex com2)
{
com1.fact=com1.fact*com2.fact-com1.virtual*com2.virtual;
com1.virtual=com1.fact*com2.virtual+com1.virtual*com2.fact;
return com1;
}
public complex operate4(complex com1,complex com2)
{
com2.virtual=-1*com2.virtual;
com1=operate3(com1,com2);
com1.fact=com1.fact/(com2.fact*com2.fact+com2.virtual*com2.virtual);
com1.virtual=com1.virtual/(com2.fact*com2.fact+com2.virtual*com2.virtual);
return com1;
}
public complex operate(complex com1,complex com2,String q)
{
if(q.equalsIgnoreCase("+"))
com1=operate1(com1,com2);
else
if(q.equalsIgnoreCase("-"))
com1=operate2(com1,com2);
else
if(q.equalsIgnoreCase("*"))
com1=operate3(com1,com2);
else
if(q.equalsIgnoreCase("/"))
com1=operate4(com1,com2);
return com1;
}
}
class clumain
{
public static void main(String[] args)
{
complexop clum=new complexop();
System.out.println("请输入第");
String s="",q="",st="",st1="",st2;int p=0,p1=0;
float f,v;
int n=0,n1,n2,x=0;
complex[] cp=new complex[100];
for(n1=0;n1<100;n1++)
cp[n1]=new complex();
String[] ops=new String[100];
int c=-1,op=-1,m=0,m1=0,m2=0,m3=0;
int nn;
try{
BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
s=in.readLine();
}catch(IOException e){s="";}
while((n!=s.length())&&(s!=""))
{
if(s.charAt(n)=='(')
{
if(m==1)
{
m2=m;
m=0;
}
if(m1==1)
{
m3=m;
m=0;
}
if(st!="")
{
c++;
if(p==1)
{
cp[c].fact=0;
cp[c].virtual=Float.parseFloat(st1);
p=0; //p为遇见j时的标记
}
else
{
cp[c].fact=Float.parseFloat(st1);
cp[c].virtual=0;
}
}
if(q!="")
{
op++;
ops[op]=q;
q="";
}
op++;
ops[op]=String.valueOf(s.charAt(n));
m1=1;
}
else
if((s.charAt(n)==')')&&(m1==1))
{
if(st1!="")
{
if(p+p1==1)
{
c++;
cp[c].fact=Float.parseFloat(st1);
cp[c].virtual=Float.parseFloat(st);
op++;
ops[op]=String.valueOf(s.charAt(n));
p=0;
st1="";
st="";
}
else
{
for(nn=0;nn<2;nn++)
{
c++;
if(p==1)
{
cp[c].fact=0;
cp[c].virtual=Float.parseFloat(st1);
p=0;
}
else
{
cp[c].fact=Float.parseFloat(st1);
cp[c].virtual=0;
}
st1=st;
}
op++;
ops[op]=q;
st="";
st="";
}
}
while(ops[op].equalsIgnoreCase("("))
{
q=ops[op];
cp[c-1]=clum.operate(cp[c-1],cp[c],q);
op--;
c--;
}
op--;
q="";
m1=0;m=m2;m2=0;m1=m3;m3=0;
}
else
if((s.charAt(n)=='*')||(s.charAt(n)=='/'))
{
if(m==1)
{
q=ops[op];
cp[c-1]=clum.operate(cp[c-1],cp[c],q);
op--;
c--;
q="";
}
if(st1!="")
{
c++;
if(p==1)
{
cp[c].fact=0;
cp[c].virtual=Float.parseFloat(st1);
p=0; //p为遇见j是的标记
}
else
{
cp[c].fact=Float.parseFloat(st1);
cp[c].virtual=0;
}
st1="";
op++;
ops[op]=String.valueOf(s.charAt(n));
}
if(st!="")
{
c++;
if(p==1)
{
cp[c].fact=0;
cp[c].virtual=Float.parseFloat(st);
p=0; //p为遇见j是的标记
}
else
{
cp[c].fact=Float.parseFloat(st);
cp[c].virtual=0;
}
st="";
}
op++;
ops[op]=String.valueOf(s.charAt(n));
m=1;
}
else
if(m==1)
{
if(st!="")
{
c++;
if(p==1)
{
cp[c].fact=0;
cp[c].virtual=Float.parseFloat(st);
p=0; //p为遇见j是的标记
}
else
{
cp[c].fact=Float.parseFloat(st);
cp[c].virtual=0;
}
st="";
}
q=ops[op];
cp[c-1]=clum.operate(cp[c-1],cp[c],q);
c--;
ops[op]=String.valueOf(s.charAt(n));
q="";
}
else
{
if(s.charAt(n)=='j')
{
if(n==0)
st="1";
p=1;
}
else
if((s.charAt(n)=='+')||(s.charAt(n)=='-'))
{
p1=p;
if(st1=="")
{st1=st;st="";q=String.valueOf(s.charAt(n));}
else
if(p+p1==1)
{
c++;
cp[c].fact=Float.parseFloat(st1);
cp[c].virtual=Float.parseFloat(st);
op++;
ops[op]=String.valueOf(s.charAt(n));
p=0;
st1="";
st="";
}
else
{
c++;
if(p==1)
{
cp[c].fact=0;
cp[c].virtual=Float.parseFloat(st1);
p=0;
}
else
{
cp[c].fact=Float.parseFloat(st1);
cp[c].virtual=0;
}
op++;
ops[op]=q;
st1=st;
st="";
q=String.valueOf(s.charAt(n));
}
}
else
{
st=st.concat(String.valueOf(s.charAt(n)));
}
}
n++;
}
if(m==1)
{
c++;
if(p==1)
{
cp[c].fact=0;
cp[c].virtual=Float.parseFloat(st);
p=0; //p为遇见j是的标记
}
else
{
cp[c].fact=Float.parseFloat(st);
cp[c].virtual=0;
}
st="";
q=ops[op];
cp[c-1]=clum.operate(cp[c-1],cp[c],q);
c--;
op--;
}
else
if(st!="")
{
if(st1=="")
{
c++;
if(p==1)
{
cp[c].fact=0;
cp[c].virtual=Float.parseFloat(st);
p=0; //p为遇见j是的标记
}
else
{
cp[c].fact=Float.parseFloat(st);
cp[c].virtual=0;
}
st="";
}
else
{
if(p+p1==1)
{
c++;
cp[c].fact=Float.parseFloat(st1);
cp[c].virtual=Float.parseFloat(st);
op++;
ops[op]=String.valueOf(s.charAt(n));
p=0;
st1="";
st="";
}
else
{
c++;
if(p==1)
{
cp[c].fact=0;
cp[c].virtual=Float.parseFloat(st1);
p=0;
}
else
{
cp[c].fact=Float.parseFloat(st1);
cp[c].virtual=0;
}
op++;
ops[op]=q;
st1="";
st="";
}
}
}
while(c!=0)
{
q=ops[op];
cp[c-1]=clum.operate(cp[c-1],cp[c],q);
c--;
op--;
}
System.out.println(String.valueOf(cp[c].fact)+String.valueOf(cp[c].virtual)+"j");
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -