坚持我的Java作业 - 使用StringBuilder进行Hangman游戏 - 帮助?

时间:2010-11-16 12:38:25

标签: java stringbuilder

*注意:我没有要求你做我的家庭作业。我只是卡住了。

我正在设计一个Hangman课程。显然,我们需要三个StringBuilders(a)一个显示连字符:"--------"单词的长度,b)一个显示正确的字母猜测:"--a--e---",最后c)另一个基本上是b的对面(猜测的字母用连字符和未透露的字母代替)。 c)的目的是在猜测期间查看是否有任何匹配。

我最大的问题是我在Google上找不到很多实用的StringBuilder示例,即我最大的问题是我可以/应该在Hangman类中实例化三个StringBuilders吗?

感谢...

4 个答案:

答案 0 :(得分:2)

我在这里猜测你有一个Hangman类,它可以作为一个模型来完成三件事(与此相关):

  • 为您提供一个字符串 - 对于单词中的每个字符进行猜测
  • 为您提供一个字符串,在正确的位置显示正确猜到的字符
  • 为您提供一个字符串,显示已使用的字符

这些都取决于模型的状态

  • 这个词
  • 猜到的字符

基于此我会说你应该有三个返回Strings的方法,并在每个方法中创建一个新的StringBuilder实例。构建一个字符串与状态是分开的,只是为了清楚我不同意Computerish的原因。

StringBuilder是一种更有效的方法来构建字符串然后只使用串联,但它很容易使用。首先要创建它的实例。

StringBuilder builder = new StringBuilder();

然后通过附加字符串或字符(或其他内容)来构建字符串:

builder.append('-');
builder.append('w');

完成后,从StringBuilder构造一个String实例:

String string = builder.toString();

你最终会得到“-w”,这是一个相当无聊的例子。

答案 1 :(得分:0)

一个简短的例子:

StringBuilder helloWorldBuilder = new StringBuilder();
helloWorldBuilder.append("Hello");
helloWorldBuilder.append(" ");
helloWorldBuilder.append("World");
helloWorldBuilder.append("!");
String helloWorld = helloWorldBuilder.toString();

是的,您可以根据需要创建尽可能多的StringBuilder个对象(假设您拥有无限堆,但几乎可以说:“尽可能多的”,这比3更大:-))

答案 2 :(得分:0)

StringBuilder的目的是在消耗之前构建一个字符串。它们应该每次都是新鲜的(这对于未来更严峻的问题是很好的做法)。因此,不要考虑stringbuilder类,而是考虑如何构建所需的字符串。假设您在char数组中存储了正确的猜测,您可以根据需要使用三种方法来构建字符串。在其中一种情况下,您根本不需要StringBuilder。

您的ToBlankFormat方法可能如下所示:

public String toBlankFormat()
{
    char[] format = new char[answer.length()];
    Arrays.fill(format, '-');
    return new String(format);
}

基本上,要使用StringBuilder,您只需追加字符串,字符等,然后调用ToString()方法。一个例子如下:

public String example()
{
    StringBuilder builder = new StringBuilder("Hello"); // initial value

    if (addSpaces)
    {
        builder.append(" ");
    }

    builder.append("World");
    return builder.ToString();
}

答案 3 :(得分:-1)

三个StringBuilder应该是您的类的实例变量。您可以在类构造函数中实例化它们,也可以在选择正在猜测的单词时对它们进行实例化。