2017-09-02 78 views
1

奧凱的替換所有字符數(在StringBuilder的),所以我讓自己一個劊子手遊戲,沒有那麼新到Java,但我仍然在學習。我遇到了一個困擾我的問題。在其指數從他們的出現另一個字符串

我需要一個字符串生成器(即具有相同的字符數作爲生成的詞)在其指數之內更換所有字符數(如果用戶已經正確地猜測的一個字母)。有一點複雜,我知道,但這裏的一些代碼。

StringBuilder wordTemplate = new StringBuilder(); 
for (int i = 0; i < theWord.length(); i++) { 
    wordTemplate.append('?'); 
} 

此代碼創建用相同量的字符作爲生成的詞的字符串,所以如果單詞是「你好」,將產生「?????」並且當你猜測每個字母會代替該字母的相應索引(例如,如果我猜對O,它會打印「????」等)。

但是,如果一封信再次出現超過一次,猜測隻影響1個字母,只有那封信,有效突破爲其他事件都從未改變從而導致這個詞從未被完成了比賽。我尋覓了好一陣子,無法找到一個解決方案來幫我更換所有的猜測字符的出現從他們的字的多個索引。

如果它會幫助這裏是我目前使用的從他們的指數代替字母的代碼,

if (theWord.contains(guess)) { 
    wordTemplate.deleteCharAt(theWord.indexOf(guess)); 
    wordTemplate.replace(theWord.indexOf(guess), theWord.indexOf(guess), guess); 
    System.out.println(wordTemplate); 
} 

先前所說明的每個字符的1這隻作品,並多次出現無法正常工作。感謝提前:)

回答

1

試試這個:

String guess = "l"; 
    int start = 0; 
    do { 
     int index = theWord.indexOf(guess, start); 
     if(index >= 0) { 
      wordTemplate.replace(index, index + 1, guess); 
      start = index + 1; 
     } else 
      break; 
    } while (true); 

    System.out.println(wordTemplate); 
0

您可以將以下代碼:

wordTemplate.deleteCharAt(theWord.indexOf(guess)); 
wordTemplate.replace(theWord.indexOf(guess), theWord.indexOf(guess), guess); 

wordTemplate = new StringBuilder(wordTemplate.toString().replace("?", guess)); 
相關問題