Input van een gebruiker in Java krijgen (met afbeeldingen)

Inhoudsopgave:

Input van een gebruiker in Java krijgen (met afbeeldingen)
Input van een gebruiker in Java krijgen (met afbeeldingen)

Video: Input van een gebruiker in Java krijgen (met afbeeldingen)

Video: Input van een gebruiker in Java krijgen (met afbeeldingen)
Video: Plague Inc: The Cure - Prion Mega-Brutal Guide 2024, Mei
Anonim

Wanneer u programmeert in Java of een andere taal, zult u hoogstwaarschijnlijk invoerinformatie van een gebruiker moeten gebruiken. Java biedt veel verschillende methoden voor het verkrijgen van gebruikersinformatie, maar de meest gebruikelijke en misschien wel het gemakkelijkst te implementeren methode is het gebruik van het Scanner-object.

Stappen

Methode 1 van 2: Video's

1514756 1
1514756 1

Stap 1. Importeer de Scanner-klasse

U kunt ervoor kiezen om de

java.util. Scanner

klas of de hele

java.util

pakket. Om een klasse of pakket te importeren, voegt u een van de volgende regels toe aan het begin van uw code:

    java.util. Scanner importeren; // Hiermee wordt alleen de Scanner-klasse geïmporteerd. import java.util.*; // Hiermee wordt het hele java.util-pakket geïmporteerd.

1514756 2
1514756 2

Stap 2. Initialiseer een nieuw Scanner-object door de

systeem.in

invoerstroom naar de constructor.

systeem.in

is de standaard invoerstroom die al open is en klaar is om invoergegevens te leveren. Meestal komt deze stream overeen met invoer via het toetsenbord.

    Scanner userInputScanner = nieuwe scanner (System.in);

1514756 3
1514756 3

Stap 3. Lees verschillende soorten invoergegevens in die de gebruiker invoert

De klasse Scanner ondersteunt het verkrijgen van primitieven zoals int, byte, short, long naast het verkrijgen van strings.

  • Hier zijn enkele methoden die beschikbaar zijn via de Scanner-klasse:

    • Lees een byte -

      volgendeByte()

    • Lees een korte -

      volgendeKorte()

    • Lees een int -

      volgendeInt()

    • Doorlezen -

      volgendeLang()

    • Lees een float -

      volgendeFloat()

    • Lees een dubbel -

      volgendeDouble()

    • Lees een boolean -

      volgendeBoolean()

    • Lees een volledige regel -

      volgendeLijn()

    • Lees een woord -

      De volgende()

  • Hier is een voorbeeld van een programma dat verschillende methoden van de Scanner-klasse gebruikt om verschillende soorten invoer te krijgen:

      java.util. Scanner importeren; public class ScannerExample {public static void main (String args) { // Start een nieuwe Scanner Scanner userInputScanner = new Scanner (System.in); // Testen nextLine(); System.out.println("\nWat is uw naam? "); Stringnaam = userInputScanner.nextLine(); // Testen nextInt(); System.out.print("Hoeveel katten heb je? "); int numberOfCats = userInputScanner.nextInt(); // Testen nextDouble(); System.out.print("Hoeveel geld zit er in uw portemonnee? $"); dubbel moneyInWallet = userInputScanner.nextDouble(); System.out.println("\nHallo " + naam + "! Je hebt " + numberOfCats + (numberOfCats > 1 ? " cats": "cat") + " en $" + moneyInWallet + " in je portemonnee.\n"); } }

Methode 2 van 2: Uitzonderingen afhandelen

1514756 4
1514756 4

Stap 1. Behandel invoeruitzonderingen

Een

InputMismatchUitzondering

wordt gegenereerd wanneer de gebruiker gegevens invoert die niet overeenkomen met het gevraagde type. Als de gebruiker bijvoorbeeld een String invoert wanneer er om een int wordt gevraagd, zal het programma een

InputMismatchUitzondering

en uitstappen. Er zijn verschillende manieren om met deze uitzondering om te gaan en dit probleem op te lossen, zodat uw programma onfeilbaar is.

1514756 5
1514756 5

Stap 2. Gebruik een try-catch-blok om de af te handelen

InputMismatchUitzondering

.

    import java.util. InputMismatchException; java.util. Scanner importeren; public class ScannerExample {public static void main (String args) { // Start een nieuwe Scanner Scanner userInputScanner = new Scanner (System.in); // Testen nextLine(); System.out.print("\nWat is uw naam? "); Stringnaam = userInputScanner.nextLine(); // Testen nextInt(); booleaanse validInput = false; int numberOfCats = 0; while (!validInput) { System.out.print("Hoeveel katten heb je? "); probeer { numberOfCats = userInputScanner.nextInt(); validInput = waar; } catch (InputMismatchException e) { validInput = false; userInputScanner.nextLine(); } } // NextDouble(); validInput = onwaar; dubbel geldInWallet = 0.0; while (!validInput) { System.out.print("Hoeveel geld zit er in uw portemonnee? $"); probeer { moneyInWallet = userInputScanner.nextDouble(); userInputScanner.nextLine(); validInput = waar; } catch (InputMismatchException e) { validInput = false; userInputScanner.nextLine(); } } System.out.println("\nHallo " + naam + "! Je hebt " + numberOfCats + (numberOfCats > 1 ? " cats": "cat") + " en $" + moneyInWallet + " in je portemonnee.\ N"); } }

  • Merk op dat we moeten importeren

    java.util. InputMismatchException

    om de te gebruiken

    InputMismatchUitzondering

  • klas.
  • We gebruiken een while-lus om de gebruiker dezelfde vraag te stellen totdat de gebruiker de juiste invoer invoert.
  • Toevoegen

    userInputScanner.nextLine();

  • in het catch-gedeelte van de try-catch zorgt ervoor dat de scanner de "enter"-toets van de gebruiker bevestigt en functioneert als een manier om de invoerbuffer te wissen.
1514756 6
1514756 6

Stap 3. U kunt ook de invoer van de gebruiker onfeilbaar maken door alleen de volgende regels van de scanner op te nemen

Op deze manier kunnen we ervoor zorgen dat alles wat de Scanner retourneert een String-object is en geen uitzonderingen maakt. Om de tekenreeksen vervolgens om te zetten in gehele getallen of verdubbelingen, kunnen we de Integer- en Double-wrapperklassen gebruiken.

    java.util. Scanner importeren; public class ScannerExample {public static void main (String args) { // Start een nieuwe Scanner Scanner userInputScanner = new Scanner (System.in); // Testen nextLine(); System.out.print("\nWat is uw naam? "); Stringnaam = userInputScanner.nextLine(); // Testen nextInt(); booleaanse validInput = false; int numberOfCats = 0; while (!validInput) { System.out.print("Hoeveel katten heb je? "); Tekenreeksinvoer = userInputScanner.nextLine(); probeer { numberOfCats = Integer.parseInt (invoer); validInput = waar; } catch (NumberFormatException e) { validInput = false; } } // NextDouble(); validInput = onwaar; dubbel geldInWallet = 0.0; while (!validInput) { System.out.print("Hoeveel geld zit er in uw portemonnee? $"); Tekenreeksinvoer = userInputScanner.nextLine(); probeer { moneyInWallet = Double.parseDouble (invoer); validInput = waar; } catch (NumberFormatException e) { validInput = false; } } System.out.println("\nHallo " + naam + "! Je hebt " + numberOfCats + (numberOfCats > 1 ? " cats": "cat") + " en $" + moneyInWallet + " in je portemonnee.\ N"); } }

  • Merk op dat we hier de. niet hoefden te importeren

    NummerFormaatUitzondering

  • class omdat het deel uitmaakt van het java.lang-pakket, wat betekent dat het ingebouwd is.
  • We hoefden de buffer ook niet te wissen met

    userInputScanner.nextLine();

  • in het vanggedeelte van de try-catch.

Tips

  • Zie de Scanner API voor meer informatie over het gebruik van de Scanner-klasse.
  • Gebruik altijd.next() in plaats van.nextLine() om het volgende woord te lezen, aangezien.nextLine() fouten kan bevatten.

Aanbevolen: