Prilikom programiranja na Javi ili bilo kojem drugom jeziku, najvjerojatnije ćete morati koristiti ulazne podatke od korisnika. Java nudi mnogo različitih metoda za dobivanje korisničkih informacija, ali najčešća i možda najjednostavnija metoda je korištenje objekta Skener.
Koraci
Metoda 1 od 2: Video zapisi
Korak 1. Uvezite klasu Skener
Možete izabrati uvoz u
java.util. Scanner
klase ili cele
java.util
paket. Da biste uvezli klasu ili paket, dodajte jedan od sljedećih redova na sam početak koda:
import java.util. Scanner; // Ovo će uvesti samo klasu Scanner. import java.util.*; // Ovo će uvesti cijeli paket java.util.
Korak 2. Inicijalizirajte novi objekt skenera prosljeđivanjem
System.in
ulazni tok u konstruktor.
System.in
je standardni ulazni tok koji je već otvoren i spreman za isporuku ulaznih podataka. Obično ovaj tok odgovara unosu sa tastature.
Skener userInputScanner = novi skener (System.in);
Korak 3. Pročitajte različite vrste ulaznih podataka koje korisnik unosi
Klasa Scanner podržava dobijanje primitiva kao što su int, byte, short, long pored dobijanja nizova.
-
Evo nekoliko metoda koje su dostupne kroz klasu Skener:
-
Pročitajte bajt -
nextByte ()
-
Pročitajte kratak tekst -
nextShort ()
-
Pročitajte int -
nextInt ()
-
Čitajte dugo -
nextLong ()
-
Čitajte float -
nextFloat ()
-
Čitaj dvostruko -
nextDouble ()
-
Čitajte boolean -
nextBoolean ()
-
Pročitajte ceo red -
nextLine ()
-
Pročitaj riječ -
sljedeći()
-
-
Evo primjera programa koji koristi različite metode klase Scanner za dobivanje različitih vrsta unosa:
import java.util. Scanner; javna klasa ScannerExample {public static void main (String args) {// Pokretanje novog skenera skenera userInputScanner = novi skener (System.in); // Testiranje nextLine (); System.out.println ("\ nKako se zovete?"); String name = userInputScanner.nextLine (); // Testiranje nextInt (); System.out.print ("Koliko mačaka imate?"); int numberOfCats = userInputScanner.nextInt (); // Testiranje nextDouble (); System.out.print ("Koliko novca ima u vašem novčaniku? $"); dvostruki moneyInWallet = userInputScanner.nextDouble (); System.out.println ("\ nZdravo" + ime + "! U svom novčaniku imate" + numberOfCats + (numberOfCats> 1? "Cats": "cat") + "i $" + moneyInWallet + ". / N"); }}
Metoda 2 od 2: Rukovanje iznimkama
Korak 1. Rukujte iznimkama unosa
An
InputMismatchException
se baca kada korisnik unese podatke koji se ne podudaraju sa traženim tipom. Na primjer, ako korisnik unese niz kada se traži int, program će baciti
InputMismatchException
i izađite. Postoji nekoliko načina za rješavanje ovog izuzetka i rješavanje ovog problema tako da vaš program može biti siguran.
Korak 2. Upotrijebite try-catch blok za rukovanje
InputMismatchException
.
import java.util. InputMismatchException; import java.util. Scanner; javna klasa ScannerExample {public static void main (String args) {// Pokretanje novog skenera skenera userInputScanner = novi skener (System.in); // Testiranje nextLine (); System.out.print ("\ nKako se zovete?"); String name = userInputScanner.nextLine (); // Testiranje nextInt (); boolean validInput = false; int numberOfCats = 0; while (! validInput) {System.out.print ("Koliko mačaka imate?"); probajte {numberOfCats = userInputScanner.nextInt (); validInput = true; } catch (InputMismatchException e) {validInput = false; userInputScanner.nextLine (); }} // Testiranje nextDouble (); validInput = false; dvostruki moneyInWallet = 0,0; while (! validInput) {System.out.print ("Koliko novca ima u vašem novčaniku? $"); probajte {moneyInWallet = userInputScanner.nextDouble (); userInputScanner.nextLine (); validInput = true; } catch (InputMismatchException e) {validInput = false; userInputScanner.nextLine (); }} System.out.println ("\ nZdravo" + ime + "! U svom novčaniku imate" + numberOfCats + (numberOfCats> 1? "Cats": "cat") + "i $" + moneyInWallet + ". / n "); }}
Imajte na umu da moramo uvesti
java.util. InputMismatchException
kako biste koristili
InputMismatchException
Dodavanje
userInputScanner.nextLine ();
Korak 3. Alternativno, učinite korisnički unos sigurnim tako što ćete samo uzeti sljedeće redove iz skenera
Na ovaj način možemo osigurati da je sve što skener vrati objekt String i da neće stvoriti iznimke. Zatim, za pretvaranje nizova u cijele ili dvostruke, možemo koristiti klase Integer i Double omotač.
import java.util. Scanner; javna klasa ScannerExample {public static void main (String args) {// Pokretanje novog skenera skenera userInputScanner = novi skener (System.in); // Testiranje nextLine (); System.out.print ("\ nKako se zovete?"); String name = userInputScanner.nextLine (); // Testiranje nextInt (); boolean validInput = false; int numberOfCats = 0; while (! validInput) {System.out.print ("Koliko mačaka imate?"); String input = userInputScanner.nextLine (); probajte {numberOfCats = Integer.parseInt (ulaz); validInput = true; } catch (NumberFormatException e) {validInput = false; }} // Testiranje nextDouble (); validInput = false; dvostruki moneyInWallet = 0,0; while (! validInput) {System.out.print ("Koliko novca ima u vašem novčaniku? $"); String input = userInputScanner.nextLine (); probajte {moneyInWallet = Double.parseDouble (ulaz); validInput = true; } catch (NumberFormatException e) {validInput = false; }} System.out.println ("\ nZdravo" + ime + "! U svom novčaniku imate" + numberOfCats + (numberOfCats> 1? "Cats": "cat") + "i $" + moneyInWallet + ". / n "); }}
Imajte na umu da ovdje nismo morali uvoziti
NumberFormatException
Također nismo morali očistiti bafer pomoću
userInputScanner.nextLine ();
Savjeti
- Za više informacija o korištenju klase skenera pogledajte API skenera.
- Uvijek koristite.next () umjesto.nextLine () za čitanje sljedeće riječi, jer.nextLine () može imati greške.