Při programování v Javě nebo v jiném jazyce budete s největší pravděpodobností muset použít vstupní informace od uživatele. Java poskytuje mnoho různých metod pro získání informací o uživateli, ale nejběžnější a možná nejsnadněji implementovatelnou metodou je použití objektu Scanner.
Kroky
Metoda 1 ze 2: Videa
Krok 1. Importujte třídu Scanner
Můžete se buď rozhodnout importovat soubor
java.util. Scanner
třídu nebo celou
java.util
balík. Chcete -li importovat třídu nebo balíček, přidejte na začátek kódu jeden z následujících řádků:
import java.util. Scanner; // Tím se importuje pouze třída Scanner. import java.util.*; // Tím se importuje celý balíček java.util.
Krok 2. Inicializujte nový objekt Scanner předáním souboru
System.in
vstupní proud do konstruktoru.
System.in
je standardní vstupní proud, který je již otevřený a připraven dodávat vstupní data. Tento stream obvykle odpovídá vstupu z klávesnice.
Skener userInputScanner = nový skener (System.in);
Krok 3. Přečtěte si různé druhy vstupních dat, která uživatel zadá
Třída Scanner podporuje kromě získávání řetězců také získání primitiv, jako je int, byte, short, long.
-
Zde je několik metod, které jsou k dispozici prostřednictvím třídy Scanner:
-
Přečíst bajt -
nextByte ()
-
Přečtěte si krátký -
nextShort ()
-
Přečíst int -
nextInt ()
-
Čtěte dlouho -
dalšíDlouhé ()
-
Přečtěte si plovák -
nextFloat ()
-
Přečíst dvojité -
dalšíDouble ()
-
Přečtěte si boolean -
dalšíBoolean ()
-
Přečíst celý řádek -
nextLine ()
-
Přečíst slovo -
další()
-
-
Zde je příklad programu, který používá různé metody třídy Scanner k získání různých typů vstupu:
import java.util. Scanner; public class ScannerExample {public static void main (String args) {// Zahájit nový Scanner Scanner userInputScanner = nový Scanner (System.in); // Testování nextLine (); System.out.println ("\ nJak se jmenujete?"); Název řetězce = userInputScanner.nextLine (); // Testování nextInt (); System.out.print („Kolik máte koček?“); int numberOfCats = userInputScanner.nextInt (); // Testování nextDouble (); System.out.print („Kolik peněz máte ve své peněžence? $“); double moneyInWallet = userInputScanner.nextDouble (); System.out.println ("\ nDobrý den" + jméno + "! V peněžence máte" + numberOfCats + (numberOfCats> 1? "Cats": "cat") + "a $" + moneyInWallet + ". / N"); }}
Metoda 2 ze 2: Zpracování výjimek
Krok 1. Zpracování výjimek vstupu
An
InputMismatchException
je vyvoláno, když uživatel zadá data, která neodpovídají požadovanému typu. Pokud například uživatel zadá řetězec, když je požadován int, program vyvolá
InputMismatchException
a odejít. Existuje několik způsobů, jak tuto výjimku zpracovat a vyřešit tento problém tak, aby váš program mohl být spolehlivý.
Krok 2. Pomocí bloku try-catch zvládněte
InputMismatchException
.
import java.util. InputMismatchException; import java.util. Scanner; public class ScannerExample {public static void main (String args) {// Zahájit nový Scanner Scanner userInputScanner = nový Scanner (System.in); // Testování nextLine (); System.out.print ("\ nJak se jmenujete?"); Název řetězce = userInputScanner.nextLine (); // Testování nextInt (); boolean validInput = false; int numberOfCats = 0; while (! validInput) {System.out.print („Kolik koček máte?“); zkuste {numberOfCats = userInputScanner.nextInt (); validInput = true; } catch (InputMismatchException e) {validInput = false; userInputScanner.nextLine (); }} // Testování nextDouble (); validInput = false; double moneyInWallet = 0,0; while (! validInput) {System.out.print ("Kolik peněz máte ve své peněžence? $"); zkuste {moneyInWallet = userInputScanner.nextDouble (); userInputScanner.nextLine (); validInput = true; } catch (InputMismatchException e) {validInput = false; userInputScanner.nextLine (); }} System.out.println ("\ nDobrý den" + jméno + "! V peněžence máte" + numberOfCats + (numberOfCats> 1? "Cats": "cat") + "a $" + moneyInWallet + ". / n "); }}
Všimněte si, že musíme importovat
java.util. InputMismatchException
abyste mohli používat
InputMismatchException
Přidávání
userInputScanner.nextLine ();
Krok 3. Případně zajistěte, aby byl vstup uživatele spolehlivý, a to tak, že ze skeneru vezme pouze další řádky
Tímto způsobem můžeme zajistit, že vše, co skener vrátí, je objekt String a nevytvoří žádné výjimky. Potom pro převod řetězců na celá čísla nebo zdvojnásobení můžeme použít třídy obálky Integer a Double.
import java.util. Scanner; public class ScannerExample {public static void main (String args) {// Zahájit nový Scanner Scanner userInputScanner = nový Scanner (System.in); // Testování nextLine (); System.out.print ("\ nJak se jmenujete?"); Název řetězce = userInputScanner.nextLine (); // Testování nextInt (); boolean validInput = false; int numberOfCats = 0; while (! validInput) {System.out.print („Kolik koček máte?“); Řetězcový vstup = userInputScanner.nextLine (); zkusit {numberOfCats = Integer.parseInt (vstup); validInput = true; } catch (NumberFormatException e) {validInput = false; }} // Testování nextDouble (); validInput = false; double moneyInWallet = 0,0; while (! validInput) {System.out.print ("Kolik peněz máte ve své peněžence? $"); Řetězcový vstup = userInputScanner.nextLine (); zkuste {moneyInWallet = Double.parseDouble (vstup); validInput = true; } catch (NumberFormatException e) {validInput = false; }} System.out.println ("\ nDobrý den" + jméno + "! Máte v peněžence" + numberOfCats + (numberOfCats> 1? "Cats": "cat") + "a $" + moneyInWallet + " n "); }}
Zde jsme nemuseli importovat soubor
NumberFormatException
Rovněž jsme nemuseli vymazat vyrovnávací paměť pomocí
userInputScanner.nextLine ();
Tipy
- Další informace o používání třídy Scanner najdete v rozhraní Scanner API.
- Ke čtení dalšího slova vždy použijte.next () místo.nextLine (), protože.nextLine () může být buggy.