Java 如何在showMessageDialog中打印双2D数组?

Java 如何在showMessageDialog中打印双2D数组?,java,arrays,string,double,stringbuilder,Java,Arrays,String,Double,Stringbuilder,我正在写一个逆矩阵的程序 因此,我将结果存储在 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++){

我正在写一个逆矩阵的程序 因此,我将结果存储在

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);
但每次使用任何输入矩阵,我都会得到相同的结果

1.0,0.0,
-0.0,1.0,
谢谢。。对不起,我的英语不好


好的,问题解决了 我保持矩阵的大小不变

double matrix[][] = new double[n][2*n];
并按照Reimeus所说的,对循环进行一些修改

for (int j = n; j < n*2; j++) {
for(int j=n;j
谢谢大家。。
这是这个很棒的网站的第一个问题,我很快就得到了答案。非常感谢你

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

  double matrix[][] = new double[n][2*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");
 }
String fPattern=“0.00000000000000000”//请提供正确的格式模式
DecimalFormat dFormat=新的DecimalFormat(fPattern);
StringBuilder=新的StringBuilder(n*n);
对于(i=0;i

如果您总是希望小数长度固定,请使用
0.000000000000
作为模式。如果您希望小数长度可变,请使用

  double matrix[][] = new double[n][2*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");
 }
String fPattern=“0.00000000000000000”//请提供正确的格式模式
DecimalFormat dFormat=新的DecimalFormat(fPattern);
StringBuilder=新的StringBuilder(n*n);
对于(i=0;i

如果您总是希望小数的长度固定,请使用
0.000000000000
作为模式。如果您希望小数的长度可变,请使用
矩阵的逆矩阵不是平方的?在你上面的代码中,它是n乘2。你是否验证过,矩阵确实包含正确的值?这并没有回答OP的问题。好的,我将其更正为
双矩阵[][]]=new double[n][n];
但问题仍然是如何将“double”转换为“String”在不损失精度的情况下,它解决了我将矩阵的大小保持为
double matrix[]][]=new double[n][2*n];
并按照Reimeus所说的对循环进行一些修改
(int j=n;j
谢谢大家..这是这个网站的第一个问题,我很快得到了答案..非常感谢你用格式更新了答案。我注意到数组维度和迭代大小不匹配,这就是问题所在。我认为大小不正确,但这是迭代。很高兴知道,它解决了你的问题。确实如此不回答OP的问题。好吧,我把它改成
双矩阵[]][]=new double[n][n];
但问题仍然是如何将“double”转换成“String”而不丢失准确性,它解决了我将矩阵的大小保持为
双矩阵[][]=new double[n][2*n];
并按照Reimeus所说的修改
来纠正循环(int j=n;j
谢谢大家..这是这个网站的第一个问题,我很快得到了答案..非常感谢你用格式更新了答案。我注意到数组维度和迭代大小不匹配,这就是问题所在。我认为大小不正确,但这是迭代。很高兴知道,它解决了你的问题。