View Single Post
Sitat av hosjmeister Vis innlegg
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

Kode

sWord = toHost();
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..
Vis hele sitatet...
Flott. Dette løste jo problemet, og ga mening!

Det som er så gøy med programmering er at problemene dukker opp overalt. Nå skjer tydeligvis samme feilen i checkGuess methoden. Her må jeg altså returnere både arrayen og minusPoints. Kan dette gjøres på en elegant måte?

Det første jeg tenker er at jeg kan returnere arrayen, og teste om man skal legge på et minuspoeng når arrayen er sendt tilbake til main-method? Hvis det er mulig å returnere en hel array, da.