Java实现复数运算

1 问题描述
编程实现两个复数的运算。设有两个复数 和 ,则他们的运算公式为:

要求:(1)定义一个结构体类型来描述复数。
  (2)复数之间的加法、减法、乘法和除法分别用不用的函数来实现。
  (3)必须使用结构体指针的方法把函数的计算结果返回。
  说明:用户输入:运算符号(+,-,*,/) a b c d.
  输出:a+bi,输出时不管a,b是小于0或等于0都按该格式输出,输出时a,b都保留两位。

输入:
  - 2.5 3.6 1.5 4.9
输出:
  1.00±1.30i

2 解决方案

package com.liuzhen.systemExe;


import java.io.IOException;
import java.util.Scanner;


public class Main{
    
    public void complexOperation(char operation,double a,double b,double c,double d){
        if(operation == '+'){
            double temp1 = a + c;
            double temp2 = b + d;
            System.out.printf("%.2f",temp1);
            System.out.print("+");
            System.out.printf("%.2f",temp2);
            System.out.print("i");
        }
        
        if(operation == '-'){
            double temp1 = a - c;
            double temp2 = b - d;
            System.out.printf("%.2f",temp1);
            System.out.print("+");
            System.out.printf("%.2f",temp2);
            System.out.print("i");
        }
        
        if(operation == '*'){
            double temp1 = a*c - b*d;
            double temp2 = a*d + b*c;
            System.out.printf("%.2f",temp1);
            System.out.print("+");
            System.out.printf("%.2f",temp2);
            System.out.print("i");
        }
        
        if(operation == '/'){
            double temp1 = (a*c + b*d)/(c*c + d*d);
            double temp2 = (b*c - a*d)/(c*c + d*d);
            System.out.printf("%.2f",temp1);
            System.out.print("+");
            System.out.printf("%.2f",temp2);
            System.out.print("i");
        }
    }
    
    
    public static void main(String[] args){
        Main test = new Main(); 
        Scanner in = new Scanner(System.in);
        //System.out.println("请输入一个运算符和四个数字:");
        //此处重点在于单个字符的输入问题
        char operation = 0;  
        try {  
            operation = (char)System.in.read();  
        } catch (IOException e) {  
            e.printStackTrace();  
        }  
        double[] temp = new double[4];
        for(int i = 0;i < 4;i++){
            temp[i] = in.nextDouble();
        }
        test.complexOperation(operation, temp[0], temp[1], temp[2], temp[3]);
    }
}

运行结果:

请输入一个运算符和四个数字:
+ 1 2 3 4
4.00+6.00i

请输入一个运算符和四个数字:
- 1 2 3 4
-2.00+-2.00i
import java.io.*; public class Book{ double sb; double xb; Book(double x,double y){ this.sb=x; this.xb=y; } Book(){ } public static void main(String args[]){ System.out.println("请输入数据:"); double a=0; double b=0; double c=0; double d=0; String s; BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); System.out.println("请输入第一个复数的实部:"); try{ s = in.readLine(); a=Double.parseDouble(s); } catch(IOException e) { System.out.println("抛掷异常");} System.out.println("请输入第一个复述的虚部:"); try{ s = in.readLine(); b =Double.parseDouble(s); } catch(IOException e) { System.out.println("抛掷异常");} System.out.println("请输入第二个复述的实部:"); try{ s = in.readLine(); c =Double.parseDouble(s); } catch(IOException e) { System.out.println("抛掷异常");} System.out.println("请输入第二个复述的虚部:"); try{ s = in.readLine(); d =Double.parseDouble(s); } catch(IOException e) { System.out.println("抛掷异常");} Book h; h=new Book(a,b); Book j; j=new Book(c,d); System.out.println("您输入的一个数为:"); toString(h); System.out.println("您输入的二个数为:"); toString(j); Book k; k=new Book(); char z='y'; do{ System.out.println("请选择您要进行的计算:"); System.out.println("1 :进行加法运算"); System.out.println("2 :进行减法运算"); System.out.println("3 :进行修改"); System.out.println("4 :进行乘法运算"); System.out.println("5 :进行除法运算"); System.out.println("6 :查看修改结果"); int i=0; try{ i= Integer.parseInt(in.readLine()); } catch(IOException e) { System.out.println("抛掷异常");} switch(i) { case 1: k.sb=jia(h.sb,j.sb); k.xb=jia(h.xb,j.xb); System.out.println("计算结果的实部为:"+k.sb); System.out.println("计算结果的虚部为:"+k.xb); toString(k); break ; case 2: k.sb=jian(h.sb,j.sb); k.xb=jian(h.xb,j.xb); System.out.println("计算结果的实部为:"+k.sb); System.out.println("计算结果的虚部为:"+k.xb); toString(k); brea
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值