【问题标题】:Way to turn output statements into string types?将输出语句转换为字符串类型的方法?
【发布时间】:2015-02-14 06:57:39
【问题描述】:

试图在 JOptionPane 对话框中打印出一些星星。 现在我有一个 void 函数在我的 Star 类中做明星工作:

public void setStars(){

    for (int j = 0; j < column; j++){
        if (j % 2 == 0)
            System.out.print("\n");

        else
            System.out.print("\n ");
        for(int i = 0; i < row; i++)
            System.out.print("* ");
    }
}

它做了它应该做的,但我似乎无法弄清楚如何在我已经创建的对话框中实现它:

String message = String.format("Knight Name: %s%n"
            + "Knight Health: %d%n"
            + "Knight Battles: %d%n"
            + "Knight Age: %d%n"
            + "Knight Gold: $%d%n",k1.getName(), k1.getHealth(),k1.getNumberBattles(),k1.getAge(),k1.getAmountGold());
JOptionPane.showMessageDialog(null, message);

任何可能的方法来移动这些输出语句在 for 循环中并让它们作为类字符串返回?

【问题讨论】:

  • 所以您希望在对话框中打印星形图案?
  • 是的@exexzian 就是这样

标签: java string class oop


【解决方案1】:

您需要做的就是返回一个字符串,而不是使用 void 方法,并且在您用来打印的地方,您只需将它附加到 StringBuilder。 PS: 使用 StringBuilder 而不是 String += ... 因为后者真的非常非常慢...

public String setStars(){

    StringBuilder sb = new StringBuilder();

    for (int j = 0; j < column; j++){
        if (j % 2 == 0)
            sb.append("\n");

        else
            sb.append("\n ");
        for(int i = 0; i < row; i++)
            sb.append("* ");
    }

    return sb.toString();
}

【讨论】:

  • 太棒了,我不知道字符串生成器
  • 我将如何使用字符串 +=?我尝试了类似的方法,它所要做的就是打印出一颗星
  • 如果你替换了 StringBuilder sb = new StringBuilder();带字符串 str = "";并将每个 sb.append(....) 替换为 str += ... 并返回 str;到底。但是,不要这样做。字符串连接。在Java中真的很慢!
猜你喜欢
  • 2022-10-02
  • 1970-01-01
  • 2012-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-06
  • 1970-01-01
  • 2018-01-13
相关资源
最近更新 更多