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
谢谢大家..这是这个网站的第一个问题,我很快得到了答案..非常感谢你用格式更新了答案。我注意到数组维度和迭代大小不匹配,这就是问题所在。我认为大小不正确,但这是迭代。很高兴知道,它解决了你的问题。