java - 如何在showMessageDialog中打印双二维数组?

标签 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++){
        builder.append(matrix[i][j]);
        builder.append(",");
    }
    builder.append("\n");
}
JOptionPane.showMessageDialog(null, builder.toString(), "The inverse matrix is:", JOptionPane.INFORMATION_MESSAGE);

现在问题输出应该是双倍的,例如这样

-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 作为模式。如果您想要不同的长度,请使用 #.#################

关于java - 如何在showMessageDialog中打印双二维数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12808904/

相关文章:

java - 为什么在定长的正则表达式后方这种负向查找不起作用?

java - Java内置库中的两个链接如何链接在一起?

java - onSharedPreferenceChanged 不更新首选项

c# - 连接多个字符串与 String.Format

c++ - 多维字符串c++

java - Android:将一些只读字节传递给 native C++ 的最有效方法

arrays - Unmarshal 只给我嵌套在 JSON 响应中的数组的第一个元素

arrays - 如何将 Swift 字符串集转换为数组

c# - 在 C# 中获取子数组作为引用

string - 算法:最佳地将字符串拆分为 3 个子字符串