Avatar billede netspinner Nybegynder
17. november 2008 - 10:46 Der er 4 kommentarer

Kun acceptere 2 inputs

Hej

Jeg skal have lavet en begrænsning på accept af brugerinput. Pt. kan brugeren indtaste f.eks. "go south", hvor "go" er et kommandoord og "south" en præ-defineret streng.
Men pt. understøtter programmet at man indtaster f.eks. "go south south south south bent yrsa orla" - dvs. at den ignorerer alt ud over de to første ord og dermed udfører handlingen for de to første ord.

Det virker naturligvis helt hen i vejret... Nogen der har en idé til hvordan det kan løses? :-)

        // Find up to two words on the line.
        Scanner tokenizer = new Scanner(inputLine);
        if(tokenizer.hasNext()) {
            word1 = tokenizer.next();      // get first word
            if(tokenizer.hasNext()) {
                word2 = tokenizer.next();      // get second word
                // note: we just ignore the rest of the input line.
            if(tokenizer.hasNext()) { // if player has entered a 3rd word!
                word3 = tokenizer.next();
                System.out.println("Only 2 words are accepted!\n");
            }
        }
    }

        // Now check whether this word is known. If so, create a command
        // with it. If not, create a "null" command (for unknown command).
        if(commands.isCommand(word1)) {
            return new Command(word1, word2);
        }
        else {
            return new Command(null, word2);
        }
Avatar billede netspinner Nybegynder
17. november 2008 - 10:51 #1
Allerhelst ville jeg, at den ikke skal udføre handlingen, men bede brugeren om at indtaste forfra (og kun 2 ord), før man kan komme videre
Avatar billede arne_v Ekspert
18. november 2008 - 04:27 #2
Så skal du have fat i noget som læser keystrokes og ikke hele linier.

Portable console apps læser hele linier.

Hvis du skifter til en GUI Swing app vil du få langt bedre kontrol over det.
Avatar billede strata Nybegynder
23. november 2008 - 23:09 #3
Efter denne linie
  if(tokenizer.hasNext()) { // if player has entered a 3rd word!
               
Der kunne du lave noget logik i stedet for nedenstående linie
word3 = tokenizer.next();

Så den ikke udfører den indtastede kommando.
Er det et spil Zuul du er ved at lave? Det minder hvertfald meget om det :)
Avatar billede strata Nybegynder
23. november 2008 - 23:12 #4
En simpel og hurtig løsning, omend måske ikke så pæn kunne være at sætte word1 til null, eftersom den nederste kommentar giver udtryk for at det så vil være en "unknown command"

// Now check whether this word is known. If so, create a command
        // with it. If not, create a "null" command (for unknown command).
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester