2016-01-26 23 views
0

我正在讓自己成爲Hang子手遊戲,基本上我唯一遇到的問題是每次我猜字母都會翻倍。例如,如果單詞是「Hello World」,並且我猜「l」,它會打印出 「_ _ ll _ _ _ _ l _」,然後如果我猜測下一個「w」 __ l _ l _ _ _ _ _ _ _ _ _ _ _「(這是hheelllloo wwoorrlldd)。串中的字母意外翻倍

我的代碼如下所示。我的想法是,這是因爲我有一個嵌套的for循環,但我不知道如何去做這件事。

// This checks previous letters given through String guessedlet. 

for(int spot = 0; spot < wrd[0].length(); spot++) 
{ 
    for (int spot2 = 0; spot2 <= guessedlet.length() - 1; spot2++) 
    { 
     char Spot = wrd[0].charAt(spot); 
     String wordletter = Character.toString(Spot); 
     char Spot2 = guessedlet.charAt(spot2); 
     String guessedletter = Character.toString(Spot2); 
     for(int spot3 = 0; spot3 < guessedlet.length(); spot3++) 
     { 
      char Spot3 = guessedlet.charAt(spot3); 
      String guessedletter2 = Character.toString(Spot3); 
      if(letter.equals(guessedletter2)) 
      { 
       break; 
      } 
     } 
     if(guessedletter.equals(wordletter)) 
     { 
      wordletter = guessedletter; 
     } 
     else if(guessedletter.equals(" ")) 
     { 
      wordletter = ""; 
     } 
     else if(!(guessedletter.equals(wordletter))) 
     { 
      wordletter = "_"; 
     } 
     out.print(wordletter + " "); 
    } 
} 

爲什麼字母被複制?

+0

你的意思是,如標題,其中「什麼時候」翻倍? – Andreas

+0

爲什麼你有兩個外環?這可能是導致你的問題。只需將猜測的字母存儲在Set中,然後循環使用(2個單詞=句子),並打印出Set中的字母(使用contains())。 – Andreas

+0

如果第二個猜測是'w',爲什麼要打印'H'? – Andreas

回答

0

您需要將您的輸出內環以外的這樣的:

for(int spot = 0; spot < wrd[0].length(); spot++) 
{ 
    String tempDisplay = "_"; 
    for (int spot2 = 0; spot2 <= guessedlet.length() - 1;  spot2++) 
    { 
     char Spot = wrd[0].charAt(spot); 
     String wordletter = Character.toString(Spot); 
     char Spot2 = guessedlet.charAt(spot2); 
     String guessedletter = Character.toString(Spot2); 
     for(int spot3 = 0; spot3 < guessedlet.length(); spot3++) 
     { 
      char Spot3 = guessedlet.charAt(spot3); 
      String guessedletter2 = Character.toString(Spot3); 
      if(letter.equals(guessedletter2)) 
      { 
       break; 
      } 
     } 
     if(guessedletter.equalsIgnoreCase(wordletter)) 
     { 
      tempDisplay = guessedletter; 
      break; 
     } 
    } 
    out.print(tempDisplay + " "); 
} 

你只需要輸出一次在wrd[0]每個字符...

+0

非常感謝這麼多! – madcoding