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

📄 complexop.java

📁 复数运算
💻 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 + -