Java või mõne muu keele programmeerimisel peate suure tõenäosusega kasutama kasutaja sisendteavet. Java pakub kasutajateabe sisestamiseks palju erinevaid meetodeid, kuid kõige tavalisem ja võib -olla kõige hõlpsamini rakendatav meetod on objekti Scanner kasutamine.
Sammud
Meetod 1: 2: videod
Samm 1. Importige skanneri klass
Saate importida
java.util. Skanner
klass või kogu
java.util
pakett. Klassi või paketi importimiseks lisage koodi algusesse üks järgmistest ridadest:
importige java.util. Scanner; // See impordib ainult klassi Scanner. import java.util.*; // See impordib kogu paketi java.util.
Samm 2. Vormista uus skanneriobjekt, läbides
System.in
sisendvoog konstruktorisse.
System.in
on standardne sisendvoog, mis on juba avatud ja valmis sisendandmete edastamiseks. Tavaliselt vastab see voog klaviatuuri sisendile.
Skanner userInputScanner = uus skanner (System.in);
Samm 3. Lugege sisse erinevaid sisestatud andmeid, mida kasutaja sisestab
Skanneri klass toetab lisaks stringide hankimisele ka primitiivide (nt int, bait, lühike ja pikk) saamist.
-
Siin on mõned meetodid, mis on saadaval skanneriklassi kaudu:
-
Loe baiti -
nextByte ()
-
Loe lühidalt -
nextShort ()
-
Lugege int -
nextInt ()
-
Loe pikalt -
nextLong ()
-
Lugege ujukit -
nextFloat ()
-
Lugege topelt -
nextDouble ()
-
Loe tõeväärtust -
nextBoolean ()
-
Lugege tervet rida -
nextLine ()
-
Loe sõna -
järgmine ()
-
-
Siin on näide programmist, mis kasutab erinevat tüüpi sisendi saamiseks skanneri klassi erinevaid meetodeid.
importige java.util. Scanner; public class ScannerExample {public static void main (String args) {// Uue skanneriskanneri algatamine userInputScanner = new Scanner (System.in); // nextLine testimine (); System.out.println ("\ nMis su nimi on?"); Stringi nimi = userInputScanner.nextLine (); // testimine nextInt (); System.out.print ("Mitu kassi teil on?"); int numberOfCats = userInputScanner.nextInt (); // Testimine nextDouble (); System.out.print ("Kui palju raha on teie rahakotis? $"); topeltrahaInWallet = userInputScanner.nextDouble (); System.out.println ("\ nTere" + nimi + "! Teie rahakotis on" + numberOfCats + (numberOfCats> 1? "Kassid": "kass") + "ja $" + moneyInWallet + ". / N"); }}
Meetod 2/2: Erandite käsitlemine
Samm 1. Käsitlege sisendi erandeid
An
InputMismatchException
visatakse, kui kasutaja sisestab andmed, mis ei vasta soovitud tüübile. Näiteks kui kasutaja sisestab string, kui int küsitakse, viskab programm
InputMismatchException
ja väljuge. Selle erandi lahendamiseks ja selle probleemi lahendamiseks on mitu võimalust, et teie programm oleks lollikindel.
Samm 2. Kasutage proovitõmbamisplokki
InputMismatchException
.
importige java.util. InputMismatchException; importige java.util. Scanner; public class ScannerExample {public static void main (String args) {// Uue skanneriskanneri algatamine userInputScanner = new Scanner (System.in); // nextLine testimine (); System.out.print ("\ nMis su nimi on?"); Stringi nimi = userInputScanner.nextLine (); // testimine nextInt (); boolean validInput = false; int numberOfCats = 0; while (! validInput) {System.out.print ("Mitu kassi sul on?"); proovige {numberOfCats = userInputScanner.nextInt (); validInput = true; } catch (InputMismatchException e) {validInput = false; userInputScanner.nextLine (); }} // Testimine nextDouble (); validInput = vale; topeltrahaInWallet = 0,0; while (! validInput) {System.out.print ("Kui palju raha on teie rahakotis? $"); proovige {moneyInWallet = userInputScanner.nextDouble (); userInputScanner.nextLine (); validInput = true; } catch (InputMismatchException e) {validInput = false; userInputScanner.nextLine (); }} System.out.println ("\ nTere" + nimi + "! Teie rahakotis on" + numberOfCats + (numberOfCats> 1? "Kassid": "kass") + "ja $" + moneyInWallet + ". / n "); }}
Pange tähele, et peame importima
java.util. InputMismatchException
selleks, et kasutada
InputMismatchException
Lisamine
userInputScanner.nextLine ();
Samm 3. Teise võimalusena tehke kasutaja sisend lollikindlaks, võttes ainult skanneri järgmised read
Nii saame tagada, et kõik, mida skanner tagastab, on String -objekt ja ei tekita erandeid. Seejärel saame stringide täisarvudeks või kahekordistusteks teisendamiseks kasutada täisarvude ja kahekordse ümbrise klasse.
importige java.util. Scanner; public class ScannerExample {public static void main (String args) {// Uue skanneriskanneri algatamine userInputScanner = new Scanner (System.in); // nextLine testimine (); System.out.print ("\ nMis su nimi on?"); Stringi nimi = userInputScanner.nextLine (); // testimine nextInt (); boolean validInput = false; int numberOfCats = 0; while (! validInput) {System.out.print ("Mitu kassi sul on?"); Stringi sisend = userInputScanner.nextLine (); proovige {numberOfCats = Integer.parseInt (sisend); validInput = true; } püüdmine (NumberFormatException e) {validInput = false; }} // Testimine nextDouble (); validInput = vale; topeltrahaInWallet = 0,0; while (! validInput) {System.out.print ("Kui palju raha on teie rahakotis? $"); Stringi sisend = userInputScanner.nextLine (); proovige {moneyInWallet = Double.parseDouble (sisend); validInput = true; } catch (NumberFormatException e) {validInput = false; }} System.out.println ("\ nTere" + nimi + "! Teie rahakotis on" + numberOfCats + (numberOfCats> 1? "Kassid": "kass") + "ja $" + moneyInWallet + ". / n "); }}
Pange tähele, et siin ei pidanud me importima
NumberFormatException
Samuti ei pidanud me puhvrit puhastama, kasutades
userInputScanner.nextLine ();
Näpunäiteid
- Skanneri klassi kasutamise kohta lisateabe saamiseks vaadake skanneri API -d.
- Kasutage järgmise sõna lugemiseks alati.next () asemel.nextLine (), kuna.nextLine () võib olla lollakas.