1

我找不到如何让 JOptionPane 显示多维数组的方法。

这是我的第一次尝试。

public static void main (String [] args)
{
    int[][] numbers = new int[5][5];

    int rows = 5;
    int columns = 5;

    numbers[0][0] = 30;
    numbers[0][1] = 29;
    numbers[0][2] = 28;
    numbers[0][3] = 27;
    numbers[0][4] = 26;

    numbers[1][0] = 26;
    numbers[1][2] = 25;
    numbers[1][2] = 24;
    numbers[1][3] = 23;
    numbers[1][4] = 22;

    int x, y;

    for (x = 0;  x < rows; x++)
    {
        for (y = 0; y < columns; y++)
        {
            System.out.print(numbers[x][y] + " ");
        }
        System.out.println("");

    }
    JOptionPane.showMessageDialog(null, numbers,"Arrays",JOptionPane.INFORMATION_MESSAGE);
    System.exit(0);
}

这是 JOptionPane 输出

https://www.dropbox.com/s/hfyjsgeaimpr2dh/JOptionPane%20output.PNG

如您所见,有些地方出了问题。

控制台输出如下所示。

https://www.dropbox.com/s/ac0a65kttdora27/Console%20output.PNG

我想要的是您看到控制台输出显示在 JOptionPane 中。

提前致谢!

4

3 回答 3

1

您可以使用StringBuilder以与打印到控制台相同的方式:

public static void main (String [] args)
{
    int[][] numbers = new int[5][5];

    int rows = 5;
    int columns = 5;

    numbers[0][0] = 30;
    numbers[0][1] = 29;
    numbers[0][2] = 28;
    numbers[0][3] = 27;
    numbers[0][4] = 26;

    numbers[1][0] = 26;
    numbers[1][2] = 25;
    numbers[1][2] = 24;
    numbers[1][3] = 23;
    numbers[1][4] = 22;

    int x, y;
    StringBuilder builder = new StringBuilder();
    for (x = 0;  x < rows; x++)
    {
        for (y = 0; y < columns; y++)
        {
            builder.append(numbers[x][y] + " ");
        }
        builder.append("\n");
    }
    JOptionPane.showMessageDialog(null, builder,"Arrays",JOptionPane.INFORMATION_MESSAGE);
    System.exit(0);
}
于 2013-03-13T15:05:59.197 回答
0

您不能简单地将numbers数组传递给showMessageDialog()并期望它知道您希望它如何显示。您必须自己寻找合适的布局。也许您创建一个JPanel并在其上布局一些JLabels以显示您想要的输出。

于 2013-03-13T15:05:13.360 回答
0

OK 您可以按照以下步骤进行:

StringBuilder sBuilder = new StringBuilder();
sBuilder.append("<Html><Body>");
sBuilder.append("<Table>");
for (int i = 0  ; i < numbers.length ;i++)
{
  sBuilder.append("<tr>");
  for ( int j = 0 ; j < numbers[i].length; j++)
  {
    sBuilder.append("<td>"+numbers[i][j]+"</td>");
  }
  sBuilder.append("</tr>");
}
sBuilder.append("</Table>");
sBuilder.append("</Body></Html>");
JOptionPane.showMessageDialog(null, sBuilder.toString(),"Arrays",JOptionPane.INFORMATION_MESSAGE);
于 2013-03-13T15:09:18.410 回答