我正在写一个逆矩阵程序
所以我将结果存储在

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


当我在consol中打印结果时,它将是正确的
但是现在我尝试改进程序,我想在其中打印数组

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输出应该是两倍,例如这样

-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++) {


谢谢你们..
这是这个网站上的第一个问题,我很快得到了答复。

最佳答案

我相信你的矩阵是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作为模式。如果要更改长度,请使用#.#################

09-08 06:51