提问人:ItsErtHere 提问时间:2/11/2022 更新时间:2/12/2022 访问量:67
如何在 java 中制作类似 int.getRed() 的方法?
How do I make a method like int.getRed() in java?
问:
我正在用 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[])
答:
1赞
QBrute
2/12/2022
#1
正如我在评论中提到的,您不能像在 Kotlin 或 C# 中那样创建扩展方法。
但是你不应该首先用来处理复数。更好的方法是创建自己的类,其中包含计算所需的所有必要方法。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
非常感谢。我会尽我所能。
上一个:使用面阵相机进行线扫描
评论
double[] result = MyUtilClass.CPlusC(firstArray, secondArray)
Complex
getRed
getReal