`
baiguomeng
  • 浏览: 998173 次
文章分类
社区版块
存档分类
最新评论

一个计算复数四则运算的小程序

 
阅读更多

//使用程序的输入格式为:
//* 3+4i 5+8i
//运算符+n个空格+第一个复数+n个空格+第二个复数
/*
*auther starshus
*
*Date 04/11/20
*/
import java.io.BufferedReader;
import java.io.InputStreamReader;
//5.7.10
public class Command
{
private String commandLine;
public Command(String line)//构造方法,得到输入
{
commandLine = line.trim();//.trim()用来去掉两边的空格
}
public String getCommand()//得到+、-、*、/中的一个运算符
{
String cmd = "";
int index = commandLine.indexOf(' ');
if(index >= 0)
cmd = commandLine.substring(0,index);
else cmd = commandLine;
return cmd;//.toUpperCase();
}
//假设输入格式为 + a+bi c+di
//首先提取数字a
public String getA()
{
String a = "";
int index1 = commandLine.indexOf(' ');
if (index1 >= 0)
{
a=commandLine.substring(index1+1,commandLine.length()).trim();
int index2 = a.indexOf(' ');
if (index2 >=0)
a=a.substring(0,index2);
int index3 = a.indexOf('+');
if (index3 >=0)
a=a.substring(0,index3);
}else a ="";
return a;
}
//提取b
public String getB()
{
String b ="";
int index1 = commandLine.indexOf(' ');
if (index1 >= 0)
{
b=commandLine.substring(index1+1,commandLine.length()).trim();
int index2 = b.indexOf(' ');
if (index2 >=0)
b=b.substring(0,index2);
int index3 = b.indexOf('+');
int index4 = b.indexOf('i');
if ((index3+1)==index4)
{
b="1";
return b;
}
else if(index3>=0&&index4>=0)
b=b.substring(index3+1,index4);
else
b="0";
}else b="";
return b;
}
//提取c
public String getC()
{
String c ="";
int index1 = commandLine.indexOf(' ');
if (index1 >= 0)
{
c=commandLine.substring(index1+1,commandLine.length()).trim();
int index2 = c.indexOf(' ');
if (index2>=0)
c=c.substring(index2+1,c.length()).trim();
int index3= c.indexOf('+');
if(index3>=0)
c=c.substring(0,index3);
}else c="";
return c;
}
//提取d
public String getD()
{
String d="";
int index1 = commandLine.indexOf(' ');
if (index1 >= 0)
{
d=commandLine.substring(index1+1,commandLine.length()).trim();
int index2 = d.indexOf(' ');
if (index2>=0)
d=d.substring(index2+1,d.length()).trim();
int index3= d.indexOf('+');
int index4= d.indexOf('i');
if ((index3+1)==index4)
{
d="1";
return d;
}
else if(index3>=0&&index4>=0)
d=d.substring(index3+1,index4);
else
d="0";
}else d="";
return d;
}
public static String add(double a,double b,double c,double d)//加法
{
double realPart,imaginaryPart;
realPart = a+c;
imaginaryPart = b+d;
if(imaginaryPart>0)
return(realPart + "+"+imaginaryPart+"i");
else
return(realPart+""+imaginaryPart+"i");
}
public static String sub(double a,double b,double c,double d)//减法
{
double realPart,imaginaryPart;
realPart = a-c;
imaginaryPart=b-d;
if(imaginaryPart>0)
return(realPart + "+"+imaginaryPart+"i");
else
return(realPart+""+imaginaryPart+"i");
}
public static String mult(double a,double b,double c,double d)//乘法
{
double realPart,imaginaryPart;
realPart = a*c-b*d;
imaginaryPart = a*d+b*c;
if(imaginaryPart>0)
return(realPart + "+"+imaginaryPart+"i");
else
return(realPart+""+imaginaryPart+"i");
}
public static String division(double a,double b,double c,double d)//除法
{
double realPart,imaginaryPart;
realPart = (a*c+b*d)/(c*c+d*d);
imaginaryPart = (b*c-a*d)/(c*c+d*d);
if(imaginaryPart>0)
return(realPart + "+"+imaginaryPart+"i");
else
return(realPart+""+imaginaryPart+"i");
}
public static void main(String[] args)//主方法
{
System.out.println("Welcome!Press 'q' or 'Q' to quit.");
System.out.println("You can use this program like the follow example:");
System.out.println("* 20+30i 15+35i");
System.out.println("+ 20+-30i 15+-35i");
System.out.println("the first character can be '*' or '/' or '+' or '-'.");
for(;;)
{
System.out.print("$ ");
String inputLine;
try{
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
inputLine = in.readLine();
}catch (Exception exc){
System.out.println("Your input can't be used.");
continue;
}
Command commander = new Command(inputLine);//用Command类生成对象
String cmd = commander.getCommand();
if (cmd.equals("q")||cmd.equals("Q"))
break;
else if(cmd.equals("+")||cmd.equals("-")||cmd.equals("*")||cmd.equals("/"))
{
double a1,b1,c1,d1;
try{
String a=commander.getA();
a1=Double.valueOf(a).doubleValue();
String b=commander.getB();
b1=Double.valueOf(b).doubleValue();
String c=commander.getC();
c1=Double.valueOf(c).doubleValue();
String d=commander.getD();
d1=Double.valueOf(d).doubleValue();
}catch(Exception exc){
System.out.println("Sorry,your input can't be used.");
System.out.println("It should be looks like : * 1+2i 3+4i");
continue;
}
if(cmd.equals("+"))
{
System.out.println("The result is: "+add(a1,b1,c1,d1));
}
else if(cmd.equals("-"))
{
System.out.println("The result is: "+sub(a1,b1,c1,d1));
}
else if(cmd.equals("*"))
{
System.out.println("The result is: "+mult(a1,b1,c1,d1));
}
else if(cmd.equals("/"))
{
System.out.println("The result is: "+division(a1,b1,c1,d1));
}
}else
System.out.println("Sorry,the first character can be '*' or '/' or '+' or '-'.");
}
}

}

分享到:
评论

相关推荐

    表达式复数运算器

    2. **幂运算与根号**:允许用户计算复数的幂次,包括负指数,以及开方运算。例如,(1 + i)^(1/2) 将得到一个复数结果。 3. **指数与对数**:提供指数函数 e^z 和对数函数 ln(z),其中 z 是复数。这些运算在复数分析...

    winform计算器(实现简单的四则运算)

    在本文中,我们将深入探讨如何使用C# WinForms开发一个简单的四则运算计算器。这个计算器项目对于初学者来说是一个很好的起点,它可以帮助你理解和实践Windows应用程序的基础知识,以及事件处理和基本的数学逻辑。 ...

    VC 计算复数的小工具.rar

    这个小工具不仅限于基础的加减乘除运算,还支持括号内的复杂计算以及遵循常规的四则运算优先级规则。下面我们将深入探讨该工具涉及的主要技术点和实现原理。 1. **复数计算**:复数由实部和虚部构成,如z = a + bi...

    分数及复数运算c++源代码

    这里我们将深入探讨如何用C++实现这两个类以及相关的四则运算和比较操作。 首先,`Fraction.cpp` 和 `Fraction.h` 文件是用来定义和实现分数类的。分数类通常包含两个私有(private)成员变量,表示分子和分母,...

    潮流计算(运用vector实现矩阵的运算,包括返回一个矩阵,运用复数库对复数进行操作)

    根据给定的信息,本文将详细解释“潮流计算(运用vector实现矩阵的运算,包括返回一个矩阵,运用复数库对复数进行操作)”这一主题所涉及的重要知识点。 ### 一、潮流计算概述 潮流计算是电力系统分析中的一个重要工具...

    C#实现的计算器小程序

    这个计算器虽然没有包含复杂的功能,如科学计算或图形化界面,但它能完成基本的四则运算,对学习C#编程的新手来说是一个很好的实践案例。 首先,我们要理解C#的基础语法。C#是一种现代化的、类型安全的、面向对象的...

    java初学小练习

    在本Java初学小练习项目中,我们关注的是利用基础的Java知识来构建一个图书管理应用,特别是涉及到了购物车功能的实现。这个项目对于初学者来说是一个很好的实践平台,能够帮助他们巩固和理解Java编程的基本概念。...

    基于Java带界面的实/复数计算器

    在本项目中,我们探讨的是一个基于Java编程语言开发的带有图形用户界面(GUI)的计算器,它专门设计用于执行实数和复数的四则运算。这个计算器使用了WindowsBuilder工具来创建用户友好的界面,提高了开发效率,并且...

    2012高考数学一轮复习 第11单元算法初步与复数精品课件 理 新人教B版.ppt

    复数的考察通常是小题,难度稳定,主要测试复数的概念和代数形式的四则运算,近年来有加强复数几何意义考查的趋势。 【教学建议】 教学时,对于算法初步,应侧重程序框图的三种基本逻辑结构和基本算法语句的理解,...

    在FPGA上优化实现复数浮点计算

    例如,一个4096点的FFT可以在每个时钟周期输入输出四个复数样本,实现高达80GFLOP/s的处理速度。 - **Cholesky分解算法的基准测试**:为了更准确地评估FPGA在高性能计算领域的性能,研究人员使用了Cholesky分解算法...

    C++程序设计-复数计算器.doc

    本文档描述的是一个C++课程设计项目,目标是创建一个复数计算器。这个计算器应该能够处理复数的设置、显示以及加、减、乘、除四种基本运算。通过这个设计,学生可以深入理解和掌握C++面向对象编程语言。 首先,设计...

    计算机学习C语言程序设计习题

    6. 四则运算.c:四则运算包括加减乘除,是任何编程语言的基础。此程序可能实现了简单的计算器功能,接收用户输入的两个数和运算符,然后进行计算。 7. 一元二次.c:一元二次方程的解涉及到了数学中的根的计算,可能...

    《MATLAB在日常计算中的应用》【杜树春】样章

    4.1.3复数的四则运算 4.1.4复数的其他运算 4.2复数运算程序1 4.2.1复数代数形式和极坐标形式间的相互转换程序 4.2.2求代数形式复数的倒数程序 4.2.3求任一复数平方根的程序 4.2.4求两个代数形式复数之积的程序...

    图形学课设:绘图小程序

    - **旋转**:图形围绕一个点(通常为中心点)按照给定的角度进行旋转,需要用到复数运算或者矩阵旋转变换。 - **缩放**:改变图形的大小,可以在x轴和y轴上分别设置缩放因子,通过乘以原坐标实现。 - **平移**:...

    本计算器可进行加(+)、减(-)、乘(*)、除(/)、开方(sqrt)、百分数(%)、倒数(1/x)等简单算术计算。

    标题中的“本计算器可进行加(+)、减(-)、乘(*)、除(/)、开方(sqrt)、百分数(%)、倒数(1/x)等简单算术计算”揭示了这款计算器具备基本的数学运算功能,包括四则运算、平方根计算、百分比转换以及求倒数。这些是任何...

    2020年高考数学三轮冲刺 专题 算法、推理与证明、复数(无答案) 理.doc

    取整函数是数学和计算机科学中常见的函数,通常表示为[ ],它将一个数四舍五入到最接近的整数。在高考数学中,取整函数可能用于计算班级代表人数或其他类似的实际问题。 综上所述,这些知识点是高考数学冲刺阶段的...

    FFT计算过程.pdf

    通过这种方式,可以发现N点DFT的结果可以由两部分较小点数的DFT计算得出,例如一个8点的FFT可以通过两个4点的FFT结果推导得出,而这两个4点的FFT又可以通过四个2点的FFT结果推导得出,以此类推,通过分治策略逐步...

    matlab符号运算

    如果其中一个为标量,则该标量会扩展至与另一个矩阵相同大小后进行运算。 - **矩阵乘法**:`A * B` 表示按照线性代数中的矩阵乘法规则进行计算。要求矩阵A的列数必须等于矩阵B的行数。当至少有一个为标量时,可以...

    计算器.zip

    总结,无论是基础的四则运算,还是复杂的科学计算,计算器都是我们的好帮手。"计算器.zip"中的应用,凭借其强大的功能和友好的界面,为初学者提供了一个理想的实践平台。通过深入学习和不断实践,我们可以更好地利用...

    vc++编写的计算器

    在本文中,我们将深入探讨如何使用Visual C++(VC++)和Microsoft Foundation Classes(MFC)库来开发一个功能丰富的计算器应用,特别是涉及到复数运算的实现。MFC是微软提供的一套C++类库,它封装了Windows API,...

Global site tag (gtag.js) - Google Analytics