当前位置: 首页 > 知识库问答 >
问题:

有办法在joptionPane.ShowMessageDialog()上打印多行模式吗?

曹新觉
2023-03-14
for(int row=1;row<=L;row++){
    for(int col=1;col<=L+L-1;col++){
        if(row==L || row+col==L+1 || col-row==L-1) System.out.print("*");
        else System.out.print(" ");
    }
    System.out.println();
}

共有1个答案

凌啸
2023-03-14

与其每次将文本打印几个字符到System.out,不如将这些字符追加到一个字符串变量(或者理想情况下StringBuilder,以获得更好的性能)。

// create an empty string and generate the pyramid by adding characters
String pyramid = "";
for (int row = 1; row <= L; row++) {
    for (int col = 1; col <= L + L - 1; col++) {
        if (row == L || row + col == L + 1 || col - row == L - 1) pyramid += "*";
        else pyramid += " ";
    }
    pyramid += "\n";
}
// outputs the same thing as all the tiny System.out writes in the original question
System.out.println(pyramid);

对于一个较小的学术问题,并不完全需要对此进行优化;但是,为了将来的参考,在连接大量小字符串时,应该使用StringBuilder。我提到这一点的原因是,在内部,当您“添加”(即连接)两个字符串时,实际上每次都在分配另一个新字符串。当在循环中使用时,这可能会增加很多字符串的新分配。

注意,JoptionPane.ShowMessageDialog(...)的默认字体在默认情况下不是单行距的,这意味着字符的长度和宽度是可变的。试图有效地显示ASCII艺术可能效果不佳。这可以通过使用不可编辑的透明文本区域来规避:

JTextArea textbox = new JTextArea(pyramid);
textbox.setOpaque(false);
textbox.setEditable(false);
textbox.setFont(new Font("Monospaced", Font.BOLD, 12));
JOptionPane.showMessageDialog(null, textbox, "Pyramid", JOptionPane.PLAIN_MESSAGE);
 类似资料:
  • 问题内容: 我想运行一个脚本,该脚本基本上显示如下输出: 目前,我先打印,然后再打印。 不过,我现在想打印并在同一行。 有任何想法吗? 问题答案: 你可以使用该语句执行此操作,而无需导入。 该print行末尾的逗号阻止print发布新行(你应注意,输出末尾会有多余的空间)。 Python 3解决方案 由于以上内容在Python 3中不起作用,因此你可以改为这样做(同样,不导入): 打印功能接受默认

  • 我一直在用java写一个作业,但当我试图写任何阿姆哈拉语字符时,它们会变成方框 例如,当我尝试在IntelliJ或net bean上打印这个阿姆哈拉字符 (አማርኛ) 时,它会显示为小盒子 如果有人熟悉这个请看看,提前谢谢。

  • 问题内容: 我正在尝试解析JSON文档,并在同一行上打印几个值。有没有办法获取以下文件: 然后吐出来: 我可以获得所需的值,但它们分别打印在不同的行上: 如果某处有一个示例说明如何执行此操作,那么我会感激任何提示。 问题答案: 您的示例中最简单的方法是将String Interpolation 与选项一起使用。例如 产生 您可能还需要考虑将值放入数组中并使用@tsv例如 产生制表符分隔的

  • 问题内容: 标题怎么说。我有一个骰子程序,它会打印骰子IE 我希望能够打印多个骰子,所以它看起来像这样: 我已经尝试过了,但是仍然将它们打印在彼此下面。我当时也在考虑创建一个函数,该函数会打印每个对象的顶行,但是我不知道该怎么做。有任何想法吗? 问题答案: 这样就可以打印了。数字在1到6(含)之间随机分配。用作命令行参数的骰子数。因此,在我的情况下./roll 6会打印6个骰子,随机数最多为6。

  • 问题内容: 根据我的研究,看来我想做的事是不可能的,但是如果情况有所变化,我想检查一下是否有人想出办法。 我有一个Web应用程序,可以根据浏览器窗口中的用户选择生成打印报告。我有一个自定义的页眉和页脚,当从浏览器打印报告时,应在每个打印的页面上重复该页眉和页脚。它不是我需要的浏览器页眉和页脚,而是我生成的自定义页眉和页脚。另外,我不认为这是CSS和媒体类型的问题,但我不是CSS专家。我没有让页眉和

  • 我认为这些信息在开始的时候真的很重要,但是后来就没有用了。它实际上使读取和调试的情况变得更糟。 I tensorflow/流执行器/dso加载器。cc:128]已成功打开CUDA库libcublas。所以8.0本地I tensorflow/流执行器/dso加载器。抄送:119]无法打开CUDA库libcudnn。所以LD_库路径:I tensorflow/stream_executor/cuda/