gpt4 book ai didi

java - 如何将 List 打印为 x+iy 格式的数组 [使用 Apache Common Math - Complex]

转载 作者:行者123 更新时间:2023-11-30 08:38:06 28 4
gpt4 key购买 nike

我试图以 x+iy 格式打印复数的所有 n 个根。我正在使用 Apache Common Math .这是我的代码:

package complex;
import static java.lang.String.format;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.apache.commons.math3.complex.Complex;
import org.apache.commons.math3.complex.ComplexFormat;
public class Do
{
public static void main(String[] args)
{
ComplexFormat complexFormat = new ComplexFormat();
Complex r = new Complex(6.3,9.6);
List<Object> list = new ArrayList();
list.add(r.nthRoot(8));
List list2 = new ArrayList();
for(int i=list.size()-1;i>=0;i--)
{
String c = (list.get(i).toString());
list2.add(c);
}

System.out.println(Arrays.toString(list2.toArray()));
}
}

我的输出没问题

输出:

run:
[[(1.346389790047983, 0.16747833178910174), (0.8336162865533764, 1.070466414773145), (-0.16747833178910165, 1.346389790047983), (-1.070466414773145, 0.8336162865533764), (-1.346389790047983, -0.16747833178910157), (-0.8336162865533766, -1.070466414773145), (0.1674783317891015, -1.346389790047983), (1.070466414773145, -0.8336162865533766)]]
BUILD SUCCESSFUL (total time: 0 seconds)

但我希望它在 x+iy 格式的数组或列表中。我在每个列表项上都尝试了 complexFormat.Parse()complexFormat.format() ,但这种情况会产生异常。

您能解释一下更好的方法吗?

最佳答案

您需要使用 ComplexFormat如下,调用format()单个数字类型的方法 Complex每次:

formatter = new ComplexFormat();
for (Complex c : list2)
{
System.out.println(formatter.format(c));
}

此代码应替换您当前的行 System.out.println(Arrays.toString(list2.toArray()));你会很高兴去...

但是...

您可能不需要创建和使用 list2 的麻烦, 刚刚设置 list作为List<Complex>而不是 List<Object>并直接使用它。所以最终版本的削减代码可能是:

package complex;
import java.util.List;
import org.apache.commons.math3.complex.Complex;
import org.apache.commons.math3.complex.ComplexFormat;
public class Do
{
public static void main(String[] args)
{
ComplexFormat complexFormat = new ComplexFormat();
Complex r = new Complex(6.3,9.6);
List<Complex> list = r.nthRoot(8);
for (Complex c : list)
{
System.out.println(complexFormat.format(c));
}
}
}

输出

1.34638979 + 0.1674783318i
0.8336162866 + 1.0704664148i
-0.1674783318 + 1.34638979i
-1.0704664148 + 0.8336162866i
-1.34638979 - 0.1674783318i
-0.8336162866 - 1.0704664148i
0.1674783318 - 1.34638979i
1.0704664148 - 0.8336162866i

注意 - ComplexFormat 的文档是here并且,特别是,你应该注意到,如果你 instantiate it with no arguments (正如我上面所做的),它默认为 x + yi格式。如果您想使用格式,您可以在实例化格式化程序时传递参数,如这些文档中所述。

关于java - 如何将 List<Complex> 打印为 x+iy 格式的数组 [使用 Apache Common Math - Complex],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36751181/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com