Java,创建一个对象 vector ,编译后其数组中应有n个零

标签 java vector interface abstract extends

这有点困难,但我会尽力让我的问题尽可能清楚。 所以我正在开发一个处理 vector 运算的项目。我针对不同的维度有不同的类:Vector3D、Vector5D 和 VectorND。因此,我有接口(interface)和抽象类来描述 Sum、Subtraction 等方法。对于操作结果,我创建一个新的对象 Vector,将坐标放在求和/减法等之后。所以这里是代码部分作为示例:

interface sample
{
    Vector Sum(Vector vec);
    Vector Subtraction(Vector vec);
    int Product(Vector vec);
    boolean Compare(Vector vec);
    String ToString();
}
abstract class Vector implements sample
{       
    int[] coordinates;  
     public Vector (int[] coordinates)
     {
         this.coordinates=coordinates;
     }
    protected abstract Vector resVec();     
    public Vector Sum(Vector vec)
    {   
        Vector result = resVec();
        if (this.coordinates.length == vec.coordinates.length)
        {
            for (int i = 0; i< vec.coordinates.length; i++)
            {
                result.coordinates[i] = this.coordinates[i] + vec.coordinates[i];
            }
        }
        else 
        {
            throw new ArithmeticException("Can't sum vectors of different length");
        }
        return result;

这里是 protected abstart Vector resVec(); - 创建新 vector 的方法,其长度取决于我们操作的 vector 的维度。 Vector3D的实现示例:

class Vector3D extends Vector

{

public Vector3D(int n1,int n2,int n3) 
{
       super(new int[]{n1,n2,n3});
}

public Vector3D resVec()
{
    Vector3D resVec = new Vector3D(0,0,0);
    return resVec;
}

所以在这里我创建了一个长度为 3 的新 vector 并用零​​填充它。我需要为 VectorND 创建相同的 vector 。像这样:

    class VectorND extends Vector
{
    public VectorND(int...n) 
    {       
            super(n);
    }
    public VectorND resVec()
    {
        VectorND resVec = new VectorND();       
        return resVec;
    }

有什么想法可以传递未声明的零个数吗?或者也许有不同实现的想法?谢谢!

最佳答案

在 resVec() 方法中,您可以填充 0 数组,然后将其传递给 Vector super 构造函数。由于您的 super 构造函数需要一个整数数组,因此您可以执行以下操作:

public VectorND resVec(int n)
{
    int[] coordinates = new int[n];
    Arrays.fill(coordinates, 0);

    VectorND resVec = new VectorND(coordinates);       
    return resVec;
}

关于Java,创建一个对象 vector ,编译后其数组中应有n个零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52742704/

相关文章:

database - 如何在数据库 : BLOB or ARRAY? 中存储向量

计算 C 数组( vector )中数字的出现次数

c++ - Qt 接口(interface)或抽象类和 qobject_cast()

c# - C# 和 CPython 之间快速且可扩展的 RPC

java - Docker 与依赖的 mysql 组合导致连接被拒绝

Java 数组 (java.lang.NullPointerException)

c++ - C++用仅两个零替换数组中的偶数个零

java - 如何在用户定义的类中使用getDocumentElement?

java - IntelliJ IDEA 始终将 MockitoAopProxyTargetInterceptor 显示为 Autowiring

java - 如何使应用程序上下文在 Spring 3 MVC 和 eclipse 中以 root 身份运行