2010-11-16 58 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(); 
}