2016-05-08 87 views
0

我是新來的java編程新手,我需要一個hang子手遊戲幫助,我必須爲11年級的sci創建。我必須爲隨機生成的單詞創建破折號,並用用戶輸入的字母替換正確的單詞。我可以替換破折號沒有問題,只是因爲它在for循環中無法保留它。這是我的了:Hang子手程序需要建議

'for(int e = 0; e < rndword.length; e++) 
    { 
    if(rndword[e] == guess.charAt(0)) 
    { 
     System.out.print(guess); 
    } 
    else if(rndword[e] == ' ') 
    { 
    System.out.print(" "); 
    } 
    else 
    { 
    System.out.print("-"); 
    } 


    }` 

樣本輸出是:

字:佳能

輸入一個字母 「O」 的

---鄰

輸入一個字母:「c」

c ----

上次輸入的字母不會再出現。

在此先感謝!

(PS我是相當新的java的所以我所知道的是陣列,交換機,用於/ while循環和do-while循環)

+0

你不是存儲在正確的字符的任何地方,所以每次循環會做,正是因爲它是上市。您必須在某處存儲正確的字符,然後更新當前的「猜測」。 –

回答

1

一個更好的辦法來做到這一點。將存儲兩個陣列,一個用於什麼應該顯示給用戶,哪一個應該顯示給用戶。

然後當用戶得到一個字母的權利,你可以修改顯示給用戶的數組。

喜歡的東西:

char[] rndword; //put the word they are trying to guess here 
char[] display; //show this one to the user (start by populating it with dashes and/or spaces) 

for(int e = 0; e < rndword.length; e++) { 
    if(rndword[e] == guess.charAt(0)) 
    { 
     display[e] = guess.charAt(0); 
    } 
    System.out.print(display[e]); 
} 
System.out.println(); 

所以display就開始出像 「---- - - 」,但如果用戶猜測 'A',它有一個 'A',它將被改爲「--A- - -AA」然後打印出來。

+0

非常感謝您的幫助!它現在有效! –

+0

@KaranSingh樂於協助! – nhouser9

0

快速實現我的評論:

String randomWord; 
char[] display; 
char guess; 

void nextGame(){ 
    randomWord = <whatever you do here>; 
    word = new char[randomWord.length()]; 
} 

for(int e = 0; e < randomWord.length; e++) { 
    if(randomWord[e] == guess) 
     display[e] = guess; 
} 

void checkWon() { 
    for(char c : display) 
     if(c == '-'){ 
      System.out.print(display); return; 
     } 

    System.out.println("Won message."); 
} 
+0

感謝您的建議! –