Problemet ditt oppstår helt i starten av programmet. Koden for å fylle arrayet virker forsåvidt, men i starten av programmet instansieres
sWord
Kode
String sWord = ""; // the word that we are supposed to guess (secretWord)
I metoden toHost settes tilsynelatende variabelen lik det brukeren skriver, men dette stemmer ikke. Java er "pass-by-value", som betyr at argumentene du sender inn i metoden sendes med verdien, ikke med referansen. Når du så skriver
Kode
word = keyboard.nextLine(); // get input from the user
vil dette kun skje innad i metoden din, men vil ikke bli reflektert utenfor metoden. Referansen endres altså ikke, kun verdien du sendte inn i metoden.
Med andre ord vil fortsatt sWord-variabelen være lik "" etter at metoden "toHost" er fullført, og returnerer (void). Dersom du hadde tatt en System.out.println() av variabelen sWord rett etter at metoden toHost er ferdig kjørt, vil du få en tom linje, uten tekst. Når du så skal fylle arrayet, er lengden på sWord lik 0 tegn, og vil derfor ikke sette inn underscore.
En enkel fiks er å skrive
for så å endre metoden toHost til
Kode
// information to game-host
public static String toHost()
{
Scanner keyboard = new Scanner(System.in); // scanner to get input from user
System.out.println("Type in the word to guess: ");
String word = keyboard.nextLine(); // get input from the user
System.out.println("Remember to 'right-click > clear'");
System.out.println("before showing to user");
System.out.println("");
return word;
}
Litt kjekt lesestoff om parametere i Java, hvis du er interessert:
http://www.yoda.arachsys.com/java/passing.html
http://stackoverflow.com/questions/4...-pass-by-value
EDIT: Fort gjort å gjøre feil her. Tydeligvis ingen andre som oppdaget denne feilen heller..