如何将 List<Complex> 打印为 x+iy 格式的数组 [使用 Apache Common Math - Complex]
How to print List<Complex> to array of x+iy format [ Using Apache Common Math - Complex ]
我试图以 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
,每次对Complex
类型的单个数字调用format()
方法:
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 and, in particular, you should notice that if you instantiate it with no arguments(正如我在上面所做的),它默认为 x + yi
格式。如果您想使用格式,请在实例化格式化程序时传递参数,如这些文档中所述。
我试图以 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
,每次对Complex
类型的单个数字调用format()
方法:
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 and, in particular, you should notice that if you instantiate it with no arguments(正如我在上面所做的),它默认为 x + yi
格式。如果您想使用格式,请在实例化格式化程序时传递参数,如这些文档中所述。