我正在编写一个逆矩阵程序 所以我将结果存储在
中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++) {
谢谢大家...... 这是这个伟大网站的第一个问题,我得到了很快的答案..非常感谢
答案 0 :(得分: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
作为模式。如果您想要不同的长度,请使用#.#################
。