收录日期:2018/04/27 01:31:19 时间:2016/05/18 06:54:58 标签:Java相关
用java 编写以下程序!!!运行环境:jdk 1.4

编写一个复数类,可以传递两个参数实部和虚部进行构造。
可以判断两个复数是否相等,进行复数的加减乘除运算,可以设定和获取
复数的实部和虚部,可以输出此复数。还可以明确创建了多少个复数类对象。


在此不尽感激!!!
这个要求有点过分了吧,怪不得没人理你
我帮你up一下
看看你给什么好处吧
如果我有现成的,可以给你。但是我没有。帮你up
这个需求有点太生僻了,估计手头有这样源码的人很少。

大概只能自己开发了,或者你可以向洪恩这样的在线教育软件开发公司询问,看看有没有相近的算法之类的东西。因为我看楼主大约是要编写一个数学教育软件
自己开发也应该可以做到吧,看来算法应该不会太难的
我看这倒像是一个练习题。
不难啊,自己试试就可以了
呵呵,很简单呀...
那天见了一个例子就是复数运算的,...
只是现在我公式都忘了...
也懒的自己写...
帮你up吧 :)
太懒了,这个东东也要别人写?
up
晕倒................ 自己拿本高中数学书,然后写吧,.忘了是高中还是初中了
力气活而已.
这个自己能完成吧,应该不难
我现在才看到,不过现在要下班了,你如果还需要的话,发个邮件吧,我明天帮你写一个
fengct@handsome.com.cn
up
up
太懒了吧!!!!!!!!!!!!!!!!!!!
up
up,不难,你很懒唉


一方面体现合成模式的概念,另一方面要使这个问题更接近一个真实的加法器,最后,我希望这个实现可以经过进一步努力后,给出减法、乘法、除法的实现。

package Arithmetics;

import java.util.Iterator;

public abstract class AbstractExpression
{
    public abstract AbstractExpression add(AbstractExpression v);

    public abstract double value();

    public abstract String getExpressionString();
}


/**8888888888888888888888888***/
package Arithmetics;

import java.util.Iterator;

public class NumericOperand extends AbstractExpression
{
    private double val = 0;
    private String expressionString = "";

    public NumericOperand(double v)
    {
        val = v;
        expressionString = ""+v;
    }
    public AbstractExpression add(AbstractExpression v)
    {
        val += v.value();
        expressionString = "(" + expressionString + " + " + v.getExpressionString() + ")";

if (v instanceof NumericOperand)
        {
return this;
        }
        else
        {
return v.add(this);
        }
    }

    public String getExpressionString()
    {
        return "(" + expressionString + ")";
    }

    public double value()
    {
return val;
    }
}

/*************************************************************/
package Arithmetics;

import java.util.HashMap;
import java.util.Iterator;

public class ComplexOperand extends AbstractExpression 
{
    private double val = 0;
    private HashMap expr = new HashMap(10);
    private int index = 0 ;
    private String expressionString = "";

    public ComplexOperand(double v)
    {
        val = v;
expressionString = ""+v;
    }

    public ComplexOperand(AbstractExpression v)
    {
val = v.value();
        expressionString = v.getExpressionString();
    }

    public AbstractExpression add(AbstractExpression v)
    {
        expr.put(new Integer(index), v);

        val += v.value();
        expressionString = "(" + expressionString + " + " + v.getExpressionString() + ")";

        return this;
    }

    public Iterator operands()
    {
        return expr.values().iterator();
    }

    public AbstractExpression getOperand(int i)
    {
return (AbstractExpression) expr.get(new Integer(i));
    }

    public String getExpressionString()
    {
return "(" + expressionString +")";
    }

    public double value()
    {
return val;
    }

}

/*******************************************************/

package Arithmetics;

public class Client
{
    public static void main(String[] args)
    {
AbstractExpression e1 = new NumericOperand(100.123);
AbstractExpression e2 = new NumericOperand(200.123);

        AbstractExpression e3 = new NumericOperand(300.123);
        AbstractExpression e4 = new NumericOperand(400.123);

        AbstractExpression ce1 = new ComplexOperand(e1);
        AbstractExpression ce2 = new ComplexOperand(e2);

        AbstractExpression ce3 = e1.add(e2);
        //Use case 1: 100.123 + 200.123
System.out.println(ce3.getExpressionString() + " = " + ce3.value());

        AbstractExpression ce4 = ce1.add(e2);
        ce1.add(e3);

        //Use case 2: (100.123 + 200.123) + 300.123
System.out.println(ce1.getExpressionString() + " = " + ce1.value());

        AbstractExpression ce5 = e1.add( e3.add(e4) );
        //Use case 3: (100.123 + 200.123) + (300.123 + 400.123)
System.out.println(ce5.getExpressionString() + " = " + ce5.value());

    }
}

我不知道在多大程度上实现了我的设想,大家提提意见,一同改进吧。
up