2012-10-09 43 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