2012-10-09 42 views
1

我正在写一个程序,以逆矩阵 所以我存储结果在如何在showMessageDialog中打印双2D数组?

double matrix[][] = new double[n][2*n]; 

,当我打印出结果在康寿这将是正确的 ,但现在我尝试改善计划,我想打印数组中

JOptionPane.showMessageDialog 

所以我写

StringBuilder builder = new StringBuilder(n*n); 
for (i = 0; i < n; i++){ 
    for(j = 0; j < n; j++){ 
     builder.append(matrix[i][j]); 
     builder.append(","); 
    } 
    builder.append("\n"); 
} 
JOptionPane.showMessageDialog(null, builder.toString(), "The inverse matrix is:", JOptionPane.INFORMATION_MESSAGE); 

现在problim输出应该做的uble例如像这样

-0.14285714285714285 0.2857142857142857 
0.4285714285714286 -0.35714285714285715  

但与任一输入矩阵我得到相同的结果

1.0,0.0, 
-0.0,1.0, 

谢谢你..和对不起我的英文不好


好每一次,它解决了 我保持矩阵的大小为

double matrix[][] = new double[n][2*n]; 

并纠正环路Reimeus一些修改

for (int j = n; j < n*2; j++) { 

说谢谢大家.. 正是在这样的大网站的第一个问题,我得到了快速回答..非常感谢您

+0

为什么矩阵的逆不是平方的?在你的上面的代码中,n是2n – jozefg

+1

你确认了吗,矩阵确实包含正确的值吗? – Baz

回答

1

我相信你的矩阵是n * n。您需要更正此行:

double matrix[][] = new double[n][2*n]; 

double matrix[][] = new double[n][n]; 

如果大小是正确的,请纠正迭代。

对于格式,请使用如下格式类DecimalFormat

String fPattern = "0.00000000000000000"; //please supply the right format pattern 
DecimalFormat dFormat = new DecimalFormat(fPattern); 
StringBuilder builder = new StringBuilder(n*n); 
for (i = 0; i < n; i++){ 
    for(j = 0; j < n; j++){ 
     builder.append(dFormat.format(matrix[i][j])); 
     builder.append(","); 
    } 
    builder.append("\n"); 
} 

请使用0.00000000000000000的模式,如果你总是希望有小数的固定长度。如果您想要改变长度,请使用#.#################

+0

这不回答OP的问题。 – Baz

+0

好,我将其校正成 '双矩阵[] [] =新的双[N] [N];' 但仍 问题如何转换的“双”为“字符串”不失准确性 –

+0

好吧,这解决方法1:保持矩阵的大小为 'double matrix [] [] = new double [n] [2 * n];' 并修正Reimeus所说的修改 for(int j = n; )。 j