在JOptionPane.showMessageDialog中打印星星?

时间:2015-10-28 15:24:39

标签: java

import javax.swing.*;

class A1{
  public static void main(String args[]) {

  String z= "";
  String a = JOptionPane.showInputDialog(null,"Enter no");

  int b = Integer.parseInt(a);
  for (int i = 1 ;i <=b ; i++){
  z +=  "*" ;}

  JOptionPane.showMessageDialog(null,"\n"+z);
}}

2 个答案:

答案 0 :(得分:0)

您需要多个循环才能在不同的行上显示文字。

不要使用字符串连接来构建字符串。

类似的东西:

String a = JOptionPane.showInputDialog(null,"Enter no");

int b = Integer.parseInt(a);

StringBuilder sb = new StringBuilder();

for (int i = 0 ; i < b ; i++)
{
    for (int j = 0; j < i; j++)
    {
        sb.append( "*" );
    }

    sb.append("\n");
}

JOptionPane.showMessageDialog(null, sb.toString());

请注意,此代码无法正常运行。我会让你解决索引范围的问题。

另一个选择是使用JTextArea在JOptionPane中显示输出,然后你的逻辑只需要一个循环。

在这种情况下,代码将类似于:

JTextArea textArea = new JTextArea(b, b);
StringBuilder sb = new StringBuilder();

for (int i = 0 ;i <b ; i++)
{
    sb.append("*");
    textArea.append(sb.toString());
    textArea.append("\n");
}

JOptionPane.showMessageDialog(null, textArea); // not sure if 

答案 1 :(得分:0)

我想这就是你想要的:

        for (int i = 1; i <= b; i++)
        {
            for (int y = 1; y <= i; y++)
                z += "*";
            z += "\n";
        }