2010-11-16 55 views
4

*注:我不是问你做我的家庭。我只是卡住了。卡住我的Java作业 - 使用StringBuilder的Hang子手游戏 - 帮助?

我正在设计一个Hang子手课。显然,我们需要三个StringBuilder(a)一个显示连字符:"--------"单词的长度,b)一个显示正确的字母猜测:"--a--e---",最后c)另一个基本上与b相反的字符(猜测字母被替换为连字符和未被发现的字母)。 c)的目的是在猜测过程中看看是否有任何匹配。

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

谢谢...

+0

你真的需要3个变量吗?你可以使用一个StringBuilder,并随着玩家的猜测不断改变角色。 – MohamedSanaulla 2010-11-16 12:46:48

+1

[StringBuilder示例](http://www.java2s.com/Tutorial/CSharp/0100__String/UseStringBuildertoreverseastring.htm) – Emil 2010-11-16 12:51:40

+0

请不要使用作业标签 – Woot4Moo 2010-11-16 16:02:33

回答

-1

这三个StringBuilders应该是你的类的实例变量。你可以在你的类构造函数中实例化它们,或者当你选择被猜测的单词时你可以实例化它们。

+0

我不同意这里。他们可能是实例变量,但说他们应该走得很远。 – willcodejavaforfood 2010-11-16 12:45:14

+0

Hangman类的模板(由CS实验室在美妙的大学提供)包含以下类构造函数: – votezdlr 2010-11-16 12:51:08

+0

公共Hangman(字符串字,int maxMisses) – votezdlr 2010-11-16 12:51:41

2

我猜在这里,你有一个刽子手类同时它也做了三件事(有关此)的模型是:

  • 为您提供了一个字符串 - 在每个字符字猜
  • 给你一个字符串,它表示在合适的位置上正确地猜测字符
  • 给你一个字符串,它表示已使用的字符

这些都是LL依赖于模型的状态,这将是

  • 字基础上
  • 字符猜测

我会说,你应该有三个方法返回字符串,并在每个这些方法创建一个新的StringBuilder实例。建立一个字符串与状态是分开的,只是为了说明为什么我不同意Computerish。

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

StringBuilder builder = new StringBuilder(); 

然后你通过追加字符串或字符(或其他东西)建立的字符串:

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

当你做了你从StringBuilder的构造一个String实例:

String string = builder.toString(); 

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

+0

这其实只是完全正确。 – votezdlr 2010-11-16 12:56:05

+0

查看下面发表评论张贴在Computerish的具体评论为什么它是如此斑点大声笑 – votezdlr 2010-11-16 12:56:29

+0

@votezdlr - 谢谢,我可以继续,但希望你有足够的时间继续:) – willcodejavaforfood 2010-11-16 12:58:11

0

一个简单的例子:

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

是的,你可以为你喜欢(假设你有无限的堆,但是实际上讲创造尽可能多StringBuilder对象:“尽可能多的,只要你喜欢”,这是更大然后3 :-))

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(); 
}