Kun ohjelmoit Java- tai millä tahansa muulla kielellä, sinun on todennäköisesti käytettävä käyttäjän syöttämiä tietoja. Java tarjoaa monia erilaisia menetelmiä käyttäjätietojen saamiseksi, mutta yleisin ja ehkä helpoin toteuttaa menetelmä on käyttää Scanner -objektia.
Askeleet
Tapa 1 /2: Videot
Vaihe 1. Tuo Skanneriluokka
Voit joko tuoda
java.util. Skanneri
luokka tai koko
java.util
paketti. Jos haluat tuoda luokan tai paketin, lisää yksi seuraavista riveistä koodisi alkuun:
tuoda java.util. Scanner; // Tämä tuo vain Scanner -luokan. tuo java.util.*; // Tämä tuo koko java.util -paketin.
Vaihe 2. Alusta uusi skanneriobjekti ohittamalla
System.in
tulovirta konstruktorille.
System.in
on vakiotulovirta, joka on jo avoinna ja valmis syöttämään syöttötietoja. Yleensä tämä virta vastaa näppäimistön tuloa.
Skanneri userInputScanner = uusi skanneri (System.in);
Vaihe 3. Lue erilaisia käyttäjän syöttämiä syöttötietoja
Skanneriluokka tukee primitiivien, kuten int, tavu, lyhyt ja pitkä, saamista merkkijonojen saamisen lisäksi.
-
Tässä on joitain menetelmiä, jotka ovat käytettävissä Scanner -luokassa:
-
Lue tavu -
nextByte ()
-
Lue lyhyt -
seuraavaLyhyt ()
-
Lue int -
nextInt ()
-
Lue pitkään -
nextLong ()
-
Lue kellua -
nextFloat ()
-
Lue tupla -
seuraavaDouble ()
-
Lue boolean -
nextBoolean ()
-
Lue koko rivi -
nextLine ()
-
Lue sana -
Seuraava()
-
-
Tässä on esimerkki ohjelmasta, joka käyttää erilaisia Scanner -luokan menetelmiä saadakseen erilaisia syötteitä:
tuoda java.util. Scanner; public class ScannerExample {public static void main (String args) {// Aloita uusi skanneriskanneri userInputScanner = new Scanner (System.in); // testataan nextLine (); System.out.println ("\ nMikä on nimesi?"); Merkkijonon nimi = userInputScanner.nextLine (); // Testataan nextInt (); System.out.print ("Kuinka monta kissaa sinulla on?"); int numberOfCats = userInputScanner.nextInt (); // Testataan nextDouble (); System.out.print ("Kuinka paljon rahaa on lompakossasi? $"); double moneyInWallet = userInputScanner.nextDouble (); System.out.println ("\ nHei" + nimi + "! Lompakossasi on" + numberOfCats + (numberOfCats> 1? "Kissat": "kissa") + "ja $" + moneyInWallet + ". / N"); }}
Tapa 2/2: Poikkeusten käsittely
Vaihe 1. Käsittele syöttöpoikkeuksia
An
InputMismatchException
heitetään, kun käyttäjä syöttää tietoja, jotka eivät vastaa pyydettyä tyyppiä. Esimerkiksi, jos käyttäjä syöttää merkkijonon, kun int pyydetään, ohjelma heittää
InputMismatchException
ja poistua. On olemassa useita tapoja käsitellä tätä poikkeusta ja ratkaista tämä ongelma, jotta ohjelmasi voi olla idioottivarma.
Vaihe 2. Käytä try-catch-lohkoa
InputMismatchException
.
tuo java.util. InputMismatchException; tuoda java.util. Scanner; public class ScannerExample {public static void main (String args) {// Aloita uusi skanneriskanneri userInputScanner = new Scanner (System.in); // testataan nextLine (); System.out.print ("\ nMikä on nimesi?"); Merkkijonon nimi = userInputScanner.nextLine (); // Testataan nextInt (); boolean validInput = false; int numberOfCats = 0; while (! validInput) {System.out.print ("Kuinka monta kissaa sinulla on?"); kokeile {numberOfCats = userInputScanner.nextInt (); validInput = true; } saalis (InputMismatchException e) {validInput = false; userInputScanner.nextLine (); }} // Testataan nextDouble (); validInput = false; double moneyInWallet = 0,0; while (! validInput) {System.out.print ("Kuinka paljon rahaa lompakossasi on? $"); kokeile {moneyInWallet = userInputScanner.nextDouble (); userInputScanner.nextLine (); validInput = true; } saalis (InputMismatchException e) {validInput = false; userInputScanner.nextLine (); }} System.out.println ("\ nHei" + nimi + "! Lompakossasi on" + numberOfCats + (numberOfCats> 1? "Cats": "kissa") + "ja $" + moneyInWallet + ". / n "); }}
Huomaa, että meidän on tuotava
java.util. InputMismatchException
voidakseen käyttää
InputMismatchException
Lisätään
userInputScanner.nextLine ();
Vaihe 3. Vaihtoehtoisesti voit tehdä käyttäjän syötteestä turhan varman ottamalla vain seuraavat rivit skannerista
Tällä tavalla voimme varmistaa, että kaikki skannerin palauttamat tiedot ovat merkkijono -objekteja eivätkä luo poikkeuksia. Sitten, jos haluat muuntaa merkkijonot kokonaisluvuiksi tai tuplaksi, voimme käyttää Integer- ja Double -kääreluokkia.
tuoda java.util. Scanner; public class ScannerExample {public static void main (String args) {// Aloita uusi skanneriskanneri userInputScanner = new Scanner (System.in); // testataan nextLine (); System.out.print ("\ nMikä on nimesi?"); Merkkijonon nimi = userInputScanner.nextLine (); // Testataan nextInt (); boolean validInput = false; int numberOfCats = 0; while (! validInput) {System.out.print ("Kuinka monta kissaa sinulla on?"); Merkkijonotulo = userInputScanner.nextLine (); try {numberOfCats = Integer.parseInt (input); validInput = true; } saalis (NumberFormatException e) {validInput = false; }} // Testataan nextDouble (); validInput = false; double moneyInWallet = 0,0; while (! validInput) {System.out.print ("Kuinka paljon rahaa lompakossasi on? $"); Merkkijonotulo = userInputScanner.nextLine (); kokeile {moneyInWallet = Double.parseDouble (input); validInput = true; } saalis (NumberFormatException e) {validInput = false; }} System.out.println ("\ nHei" + nimi + "! Lompakossasi on" + numberOfCats + (numberOfCats> 1? "Cats": "kissa") + "ja $" + moneyInWallet + ". / n "); }}
Huomaa, että täällä meidän ei tarvinnut tuoda
NumberFormatException
Meidän ei myöskään tarvinnut tyhjentää puskuria käyttämällä
userInputScanner.nextLine ();
Vinkkejä
- Lisätietoja Scanner -luokan käytöstä on Scanner API: ssa.
- Käytä aina.next (): n.nextLine () sijaan seuraavan sanan lukemiseen, koska.nextLine () voi olla viallinen.