java 中的高斯 class

gaussian class in java

我正在制作一个模拟高斯整数的 class。我在我的加法方法中使用一个构造函数来添加两个 gInt 的两个部分,然后 return 一个新的 gInt 即总和。但是由于某种原因,当我尝试实现此方法时,Java 说在我初始化新的 gInt 时需要一个 gInt 并且它发现了一个空隙。为什么会这样?我在下面包含了 class 并指出了导致此错误的行。

public class gInt {

    private int real;
    private int imag;



    public void gInt(int r)
    {
        imag=0;
        real=r;

    }

    public void gInt(int r, int i)
    {
        real=r;
        imag=i;

    }

    gInt add(gInt rhs)
    {
        gInt added;
        int nReal=this.real+rhs.real;
        int nImag=this.imag+rhs.real;

        added= gInt(nReal,nImag);   //--> Says it requires a gInt and found a void

        return added;
    }
}

使用这个实现,一切都会很开心:

public class GInt {

    private int real;
    private int imag;

    public GInt(int r) {
        imag=0;
        real=r;
    }

    public GInt(int r, int i) {
        real = r;
        imag = i;
    }

    GInt add(GInt rhs) {
        GInt added;
        int nReal = this.real + rhs.real;
        int nImag = this.imag + rhs.real;

        added = new GInt(nReal, nImag);

        return added;
    }
}

评论:

  • 不要使用以小写字母开头的 class 名称(例如 gInt 而不是 GInt
  • Java 中的构造函数在 Java 中没有 return 类型,因此我删除了 OP
  • 中的 void 类型
  • 您需要 new 运算符在 Java
  • 中创建一个新的 GInt 对象

没有在class 的构造函数 上指定return 类型。您的构造函数应该如下所示:

public gInt(int r)
{
    imag=0;
    real=r;

}

public gInt(int r, int i)
{
    real=r;
    imag=i;

}

请注意我是如何删除方法名称前面的 void 的。

当您创建 class 的新实例时,您还必须 使用 new 关键字:

added= new gInt(nReal,nImag);

有关如何在 Java、have a look at the docs 中创建对象的更多信息。

构造函数不能用void,用added = new gInt(nReal,nImag); 也许你不喜欢那样,你可以使用added = new gInt.gInt(nReal,nImag); gInt是一个对象,你需要创建,然后你才能使用该对象!