Sådan får du input fra en bruger i Java (med billeder)

Indholdsfortegnelse:

Sådan får du input fra en bruger i Java (med billeder)
Sådan får du input fra en bruger i Java (med billeder)

Video: Sådan får du input fra en bruger i Java (med billeder)

Video: Sådan får du input fra en bruger i Java (med billeder)
Video: I swore to never play this game... 2024, Kan
Anonim

Når du programmerer i Java eller et andet sprog, skal du sandsynligvis bruge inputoplysninger fra en bruger. Java giver mange forskellige metoder til at få brugerinformation, men den mest almindelige og måske letteste at implementere metode er at bruge scannerobjektet.

Trin

Metode 1 af 2: Videoer

1514756 1
1514756 1

Trin 1. Importer scannerklassen

Du kan enten vælge at importere

java.util. Scanner

klasse eller hele

java.util

pakke. For at importere en klasse eller en pakke skal du tilføje en af følgende linjer til begyndelsen af din kode:

    import java.util. Scanner; // Dette importerer kun Scanner -klassen. import java.util.*; // Dette importerer hele java.util -pakken.

1514756 2
1514756 2

Trin 2. Initialiser et nyt scannerobjekt ved at passere

System. I

inputstrøm til konstruktøren.

System. I

er standardindgangsstrømmen, der allerede er åben og klar til at levere inputdata. Typisk svarer denne strøm til tastaturindgang.

    Scanner userInputScanner = ny Scanner (System.in);

1514756 3
1514756 3

Trin 3. Læs forskellige slags inputdata, som brugeren indtaster

Scanner -klassen understøtter at få primitiver som int, byte, kort, lang ud over at få strenge.

  • Her er nogle metoder, der er tilgængelige via Scanner -klassen:

    • Læs en byte -

      nextByte ()

    • Læs en kort -

      nextShort ()

    • Læs en int -

      nextInt ()

    • Læs længe -

      nextLong ()

    • Læs en float -

      nextFloat ()

    • Læs en dobbelt -

      næsteDobbelt ()

    • Læs en boolsk -

      næsteBoolsk ()

    • Læs en komplet linje -

      nextLine ()

    • Læs et ord -

      Næste()

  • Her er et eksempel på et program, der bruger forskellige metoder i Scanner -klassen til at få forskellige typer input:

      import java.util. Scanner; public class ScannerExample {public static void main (String args) {// Start en ny Scanner Scanner userInputScanner = ny Scanner (System.in); // Test af nextLine (); System.out.println ("\ nHvad er dit navn?"); Stringnavn = userInputScanner.nextLine (); // Testing nextInt (); System.out.print ("Hvor mange katte har du?"); int numberOfCats = userInputScanner.nextInt (); // Test næsteDouble (); System.out.print ("Hvor mange penge er der i din tegnebog? $"); dobbelt moneyInWallet = userInputScanner.nextDouble (); System.out.println ("\ nHej" + navn + "! Du har" + numberOfCats + (numberOfCats> 1? "Cats": "cat") + "og $" + moneyInWallet + "i din tegnebog. / N"); }}

Metode 2 af 2: Håndtering af undtagelser

1514756 4
1514756 4

Trin 1. Håndter inputundtagelser

An

InputMismatchException

kastes, når brugeren indtaster data, der ikke matcher den ønskede type. For eksempel, hvis brugeren indtaster en streng, når der bliver bedt om en int, kaster programmet en

InputMismatchException

og afslut. Der er flere måder at håndtere denne undtagelse på og løse dette problem, så dit program kan være idiotsikkert.

1514756 5
1514756 5

Trin 2. Brug en try-catch-blok til at håndtere

InputMismatchException

.

    import java.util. InputMismatchException; import java.util. Scanner; public class ScannerExample {public static void main (String args) {// Start en ny Scanner Scanner userInputScanner = ny Scanner (System.in); // Test af nextLine (); System.out.print ("\ nHvad er dit navn?"); Stringnavn = userInputScanner.nextLine (); // Testing nextInt (); boolsk validInput = false; int numberOfCats = 0; while (! validInput) {System.out.print ("Hvor mange katte har du?"); prøv {numberOfCats = userInputScanner.nextInt (); validInput = true; } catch (InputMismatchException e) {validInput = false; userInputScanner.nextLine (); }}} // Test næsteDouble (); validInput = false; dobbelt moneyInWallet = 0,0; mens (! validInput) {System.out.print ("Hvor mange penge er der i din tegnebog? $"); prøv {moneyInWallet = userInputScanner.nextDouble (); userInputScanner.nextLine (); validInput = true; } catch (InputMismatchException e) {validInput = false; userInputScanner.nextLine (); }} System.out.println ("\ nHej" + navn + "! Du har" + numberOfCats + (numberOfCats> 1? "Cats": "cat") + "og $" + moneyInWallet + "i din tegnebog. / n "); }}

  • Bemærk, at vi skal importere

    java.util. InputMismatchException

    for at bruge

    InputMismatchException

  • klasse.
  • Vi bruger en while loop til at stille brugeren det samme spørgsmål, indtil brugeren indtaster det korrekte input.
  • Tilføjelse

    userInputScanner.nextLine ();

  • i fangstdelen af prøve-fangsten sikrer, at scanneren anerkender "enter" -tastetrykket fra brugeren og fungerer som en måde at slette inputbufferen.
1514756 6
1514756 6

Trin 3. Alternativt kan du gøre brugerinputet idiotsikkert ved kun at indtaste de næste linjer fra scanneren

På denne måde kan vi sikre, at alt, hvad scanneren returnerer, er et String -objekt og ikke skaber undtagelser. For derefter at konvertere strengene til heltal eller fordoblinger, kan vi bruge klasserne Integer og Double wrapper.

    import java.util. Scanner; public class ScannerExample {public static void main (String args) {// Start en ny Scanner Scanner userInputScanner = ny Scanner (System.in); // Test af nextLine (); System.out.print ("\ nHvad er dit navn?"); Stringnavn = userInputScanner.nextLine (); // Testing nextInt (); boolsk validInput = false; int numberOfCats = 0; while (! validInput) {System.out.print ("Hvor mange katte har du?"); String input = userInputScanner.nextLine (); prøv {numberOfCats = Integer.parseInt (input); validInput = true; } catch (NumberFormatException e) {validInput = false; }}} // Test næsteDouble (); validInput = false; dobbelt moneyInWallet = 0,0; mens (! validInput) {System.out.print ("Hvor mange penge er der i din tegnebog? $"); String input = userInputScanner.nextLine (); prøv {moneyInWallet = Double.parseDouble (input); validInput = true; } catch (NumberFormatException e) {validInput = false; }} System.out.println ("\ nHej" + navn + "! Du har" + numberOfCats + (numberOfCats> 1? "Cats": "cat") + "og $" + moneyInWallet + "i din tegnebog. / n "); }}

  • Bemærk, at vi her ikke behøvede at importere

    NumberFormatException

  • klasse, fordi den er en del af java.lang -pakken, hvilket betyder, at den kommer indbygget.
  • Vi behøvede heller ikke at rydde bufferen ved hjælp af

    userInputScanner.nextLine ();

  • i fangstdelen af prøvefangsten.

Tips

  • Se Scanner -API'en for at få flere oplysninger om brug af Scanner -klassen.
  • Brug altid.next () i stedet for.nextLine () for at læse det næste ord, da.nextLine () kan være buggy.

Anbefalede: