如何在 java 中制作类似 int.getRed() 的方法?

How do I make a method like int.getRed() in java?

提问人:ItsErtHere 提问时间:2/11/2022 更新时间:2/12/2022 访问量:67

问:

我正在用 java 制作一个虚数图形计算器(使用 a+bi={a,b}),并想为 + - * / 和 ^ 运算符制作新函数,因为它们不适用于 double[] 变量。我知道如何制作普通方法,例如File(),但是在执行int.getRed()之类的操作时遇到了麻烦。这是我的加法代码

private static double[] CPlusC(double[] a, double[] b) {
    double aN = a[1] + b[1];
    double bN = a[2] + b[2];
    double[] ansN = {aN,bN};
    return ansN;
}

我有正确的添加部分,我只是找不到任何使功能更“逼真”的东西,就像有人可以帮我吗?一旦我弄清楚了这一点,我就应该知道如何做其他的。 非常感谢!double[].CPlusC(double[])

Java 方法

评论

1赞 QBrute 2/11/2022
你说的“现实”是什么意思?看起来你想写一个类似 Kotlin 或 C# 中的扩展方法的东西,这将允许你通过为现有类型提供额外的方法来扩展它们。不幸的是,Java 不支持扩展方法,因此您只能使用 .double[] result = MyUtilClass.CPlusC(firstArray, secondArray)
2赞 Hovercraft Full Of Eels 2/11/2022
不能在 Java 基元上调用方法。此外,Java 没有运算符重载。
0赞 WJS 2/12/2022
您可以考虑创建一个类(可能是一个好名字)。然后,该类可以包含执行基本操作的方法,以及可能被认为适用于复杂值的任何其他内容。Complex
0赞 khelwood 2/12/2022
与复数有什么关系?你是说 ?getRedgetReal
0赞 ItsErtHere 2/12/2022
我将getRed()与我想要的方法格式相关联。现在我有了一个更好的方法。

答:

1赞 QBrute 2/12/2022 #1

正如我在评论中提到的,您不能像在 KotlinC# 中那样创建扩展方法。

但是你不应该首先用来处理复数。更好的方法是创建自己的类,其中包含计算所需的所有必要方法。double[]Complex

您的类可能如下所示:

public class Complex {
    private final double re;
    private final double im;

    public Complex(double re, double im) {
        this.re = re;
        this.im = im;
    }

    // getters and other methods

    public Complex add(Complex other) {
        double addedRe = re + other.re;
        double addedIm = im + other.im;
        return new Complex(addedRe, addedIm);
    }

    public String toString() {
        return String.format("%s %s %si", re, im < 0 ? "-" : "+", Math.abs(im));
    }
}

然后你可以进行如下计算:

Complex c1 = new Complex(0, 1);
Complex c2 = new Complex(2.5, 1.3);
Complex c3 = c1.add(c2);
System.out.println(c3) // 2.5 + 2.3i

评论

1赞 WJS 2/12/2022
为了保持标志的间距一致(并且正确),我会这样做return String.format("%s %s %si", re, im < 0 ? "-" : "+", Math.abs(im))
1赞 QBrute 2/12/2022
@WJS谢谢,我已经使用了你的建议。问题是您需要自己处理正确的符号来显示复数。此解决方案应该有效。
0赞 ItsErtHere 2/12/2022
非常感谢。我会尽我所能。