Hur man får inmatning från en användare i Java (med bilder)

Innehållsförteckning:

Hur man får inmatning från en användare i Java (med bilder)
Hur man får inmatning från en användare i Java (med bilder)

Video: Hur man får inmatning från en användare i Java (med bilder)

Video: Hur man får inmatning från en användare i Java (med bilder)
Video: REAL GEORGIAN CHICKEN CHAKHOKHBILI!!! HOW TO COOK? RECIPE SIMPLE 2024, Maj
Anonim

När du programmerar i Java eller något annat språk kommer du troligen att behöva använda inmatningsinformation från en användare. Java erbjuder många olika metoder för att få in användarinformation, men den vanligaste och kanske enklaste att implementera metoden är att använda skannerobjektet.

Steg

Metod 1 av 2: Videor

1514756 1
1514756 1

Steg 1. Importera skannerklassen

Du kan antingen välja att importera

java.util. Scanner

klass eller hela

java.util

paket. För att importera en klass eller ett paket, lägg till en av följande rader i början av din kod:

    importera java.util. Scanner; // Detta importerar bara skannerklassen. importera java.util.*; // Detta kommer att importera hela paketet java.util.

1514756 2
1514756 2

Steg 2. Initiera ett nytt skannerobjekt genom att passera

System. I

ingångsström till konstruktören.

System. I

är standardinmatningsströmmen som redan är öppen och redo att leverera ingångsdata. Vanligtvis motsvarar denna ström tangentbordsinmatning.

    Scanner userInputScanner = ny Scanner (System.in);

1514756 3
1514756 3

Steg 3. Läs in olika typer av indata som användaren anger

Skannerklassen stöder att få primitiv som int, byte, kort, lång förutom att få strängar.

  • Här är några metoder som är tillgängliga via skannerklassen:

    • Läs en byte -

      nextByte ()

    • Läs en kort -

      nextShort ()

    • Läs en int -

      nextInt ()

    • Läs med -

      nextLong ()

    • Läs en flottör -

      nextFloat ()

    • Läs en dubbel -

      nästaDubbel ()

    • Läs en booleskt -

      nästaBoolean ()

    • Läs en komplett rad -

      nextLine ()

    • Läs ett ord -

      Nästa()

  • Här är ett exempel på ett program som använder olika metoder i skannerklassen för att få olika typer av inmatningar:

      importera java.util. Scanner; public class ScannerExample {public static void main (String args) {// Starta en ny Scanner Scanner userInputScanner = ny Scanner (System.in); // Testa nextLine (); System.out.println ("\ nVad är ditt namn?"); Strängnamn = userInputScanner.nextLine (); // Testa nextInt (); System.out.print ("Hur många katter har du?"); int numberOfCats = userInputScanner.nextInt (); // Testar nextDouble (); System.out.print ("Hur mycket pengar finns i din plånbok? $"); dubbel moneyInWallet = userInputScanner.nextDouble (); System.out.println ("\ nHälsa" + namn + "! Du har" + numberOfCats + (numberOfCats> 1? "Cats": "cat") + "och $" + moneyInWallet + "i din plånbok. / N"); }}

Metod 2 av 2: Hantering av undantag

1514756 4
1514756 4

Steg 1. Hantera inmatningsundantag

Ett

InputMismatchException

kastas när användaren anger data som inte matchar den begärda typen. Till exempel, om användaren anger en sträng när en int efterfrågas, kommer programmet att kasta en

InputMismatchException

och avsluta. Det finns flera sätt att hantera detta undantag och lösa detta problem så att ditt program kan vara idiotsäkert.

1514756 5
1514756 5

Steg 2. Använd ett try-catch-block för att hantera

InputMismatchException

.

    importera java.util. InputMismatchException; importera java.util. Scanner; public class ScannerExample {public static void main (String args) {// Starta en ny Scanner Scanner userInputScanner = ny Scanner (System.in); // Testa nextLine (); System.out.print ("\ nVad är ditt namn?"); Strängnamn = userInputScanner.nextLine (); // Testa nextInt (); booleska validInput = false; int numberOfCats = 0; while (! validInput) {System.out.print ("Hur många katter har du?"); prova {numberOfCats = userInputScanner.nextInt (); validInput = true; } catch (InputMismatchException e) {validInput = false; userInputScanner.nextLine (); }}} // Testa nextDouble (); validInput = false; dubbel moneyInWallet = 0,0; medan (! validInput) {System.out.print ("Hur mycket pengar finns i din plånbok? $"); prova {moneyInWallet = userInputScanner.nextDouble (); userInputScanner.nextLine (); validInput = true; } catch (InputMismatchException e) {validInput = false; userInputScanner.nextLine (); }} System.out.println ("\ nHälsa" + namn + "! Du har" + numberOfCats + (numberOfCats> 1? "Cats": "cat") + "och $" + moneyInWallet + "i din plånbok. / n "); }}

  • Observera att vi måste importera

    java.util. InputMismatchException

    för att använda

    InputMismatchException

  • klass.
  • Vi använder en while -loop för att ställa samma fråga till användaren tills användaren anger rätt input.
  • Lägger till

    userInputScanner.nextLine ();

  • i fångstdelen av try-catch säkerställer att skannern bekräftar "enter" -tangenten från användaren och fungerar som ett sätt att rensa inmatningsbufferten.
1514756 6
1514756 6

Steg 3. Alternativt gör användarinmatningen idiotsäker genom att bara ta in nästa rader från skannern

På så sätt kan vi se till att allt som skannern returnerar är ett String -objekt och inte skapar några undantag. För att sedan konvertera strängarna till heltal eller dubbletter kan vi använda heltals- och dubbelomslagsklasserna.

    importera java.util. Scanner; public class ScannerExample {public static void main (String args) {// Starta en ny Scanner Scanner userInputScanner = ny Scanner (System.in); // Testa nextLine (); System.out.print ("\ nVad är ditt namn?"); Strängnamn = userInputScanner.nextLine (); // Testa nextInt (); booleska validInput = false; int numberOfCats = 0; while (! validInput) {System.out.print ("Hur många katter har du?"); String input = userInputScanner.nextLine (); prova {numberOfCats = Integer.parseInt (input); validInput = true; } catch (NumberFormatException e) {validInput = false; }}} // Testa nextDouble (); validInput = false; dubbel moneyInWallet = 0,0; medan (! validInput) {System.out.print ("Hur mycket pengar finns i din plånbok? $"); String input = userInputScanner.nextLine (); prova {moneyInWallet = Double.parseDouble (input); validInput = true; } catch (NumberFormatException e) {validInput = false; }} System.out.println ("\ nHälsa" + namn + "! Du har" + numberOfCats + (numberOfCats> 1? "Cats": "cat") + "och $" + moneyInWallet + "i din plånbok. / n "); }}

  • Observera att här behövde vi inte importera

    NumberFormatException

  • klass eftersom det är en del av java.lang -paketet, vilket innebär att det är inbyggt.
  • Vi behövde inte heller rensa bufferten med

    userInputScanner.nextLine ();

  • i fångstdelen av try-catch.

Tips

  • Se Scanner API för mer information om hur du använder skannerklassen.
  • Använd alltid.next () istället för.nextLine () för att läsa nästa ord, eftersom.nextLine () kan vara buggy.

Rekommenderad: