Java vagy más nyelv programozásakor nagy valószínűséggel a felhasználó által megadott adatokat kell használnia. A Java sokféle módszert kínál a felhasználói információk befogadására, de a legelterjedtebb és talán a legegyszerűbben megvalósítható módszer a Scanner objektum használata.
Lépések
1/2 módszer: Videók
1. lépés: Importálja a Scanner osztályt
Választhatja az importálást
java.util. Scanner
osztály vagy az egész
java.util
csomag. Osztály vagy csomag importálásához adja hozzá az alábbi sorok egyikét a kód elejéhez:
import java.util. Scanner; // Ez csak a Scanner osztályt importálja. import java.util.*; // Ez importálja a teljes java.util csomagot.
Lépés 2. Inicializáljon egy új szkennerobjektumot a
System.in
bemeneti adatfolyamot a konstruktorhoz.
System.in
a szabványos bemeneti adatfolyam, amely már nyitva van és készen áll a bemeneti adatok szolgáltatására. Általában ez az adatfolyam a billentyűzet bemenetének felel meg.
Szkenner userInputScanner = új szkenner (System.in);
3. lépés. Olvassa el a felhasználó által megadott különböző bemeneti adatokat
A Scanner osztály támogatja a primitívek, például int, byte, short, long megszerzését a karakterláncok beszerzése mellett.
-
Íme néhány módszer, amely a Scanner osztályon keresztül érhető el:
-
Bájt olvasása -
nextByte ()
-
Olvass el röviden -
nextShort ()
-
Olvasson egy int -
nextInt ()
-
Olvass sokáig -
nextLong ()
-
Úszó leolvasása -
nextFloat ()
-
Olvass duplát -
nextDouble ()
-
Boolean olvasása -
nextBoolean ()
-
Olvasson el egy teljes sort -
nextLine ()
-
Olvass el egy szót -
következő()
-
-
Íme egy példa egy programra, amely a Scanner osztály különböző módszereit használja különböző típusú bemenetek beszerzésére:
import java.util. Scanner; public class ScannerExample {public static void main (String args) {// Új Scanner Scanner kezdeményezése userInputScanner = new Scanner (System.in); // nextLine tesztelése (); System.out.println ("\ nMi a neved?"); Karakterlánc neve = userInputScanner.nextLine (); // tesztelés nextInt (); System.out.print ("Hány macskája van?"); int numberOfCats = userInputScanner.nextInt (); // tesztelés nextDouble (); System.out.print ("Mennyi pénz van a pénztárcájában? $"); dupla pénzInWallet = userInputScanner.nextDouble (); System.out.println ("\ nSzia" + név + "!" + NumberOfCats + (numberOfCats> 1? "Macskák:" macska ") +" és $ " + moneyInWallet +" van a pénztárcájában. / N "); }}
2/2. Módszer: Kivételek kezelése
1. lépés Kezelje a bemeneti kivételeket
An
InputMismatchException
dob, amikor a felhasználó olyan adatokat ír be, amelyek nem egyeznek a kért típussal. Például, ha a felhasználó egy karakterláncot ír be, amikor egy int -t kér, a program an
InputMismatchException
és kilépni. Ennek a kivételnek a kezelése és a probléma megoldása többféleképpen történhet, hogy a programja bolondbiztos legyen.
2. lépés. Használja a try-catch blokkot a
InputMismatchException
.
import java.util. InputMismatchException; import java.util. Scanner; public class ScannerExample {public static void main (String args) {// Új Scanner Scanner kezdeményezése userInputScanner = new Scanner (System.in); // nextLine tesztelése (); System.out.print ("\ nMi a neved?"); Karakterlánc neve = userInputScanner.nextLine (); // tesztelés nextInt (); logikai érvényesInput = false; int numberOfCats = 0; while (! validInput) {System.out.print ("Hány macskád van?"); try {numberOfCats = userInputScanner.nextInt (); validInput = igaz; } catch (InputMismatchException e) {validInput = false; userInputScanner.nextLine (); }} // tesztelés nextDouble (); validInput = hamis; dupla pénzInWallet = 0,0; while (! validInput) {System.out.print ("Mennyi pénz van a pénztárcájában? $"); try {moneyInWallet = userInputScanner.nextDouble (); userInputScanner.nextLine (); validInput = igaz; } catch (InputMismatchException e) {validInput = false; userInputScanner.nextLine (); }} System.out.println ("\ nSzia" + név + "!" + NumberOfCats + (numberOfCats> 1? "Cicák": "macska") + "és $" + moneyInWallet + "van a pénztárcájában. / n "); }}
Vegye figyelembe, hogy importálnunk kell
java.util. InputMismatchException
a használatához
InputMismatchException
Hozzáadás
userInputScanner.nextLine ();
Lépés 3. Alternatív megoldásként tegye a felhasználó beviteli módját hibátlanná, ha csak a következő sorokat veszi be a szkennerből
Így biztosíthatjuk, hogy minden, amit a Szkenner visszaad, karakterlánc objektum, és nem hoz létre kivételeket. Ezután, hogy a karakterláncokat egész számokká vagy párosokká alakítsuk, használhatjuk az Integer és a Double wrapper osztályokat.
import java.util. Scanner; public class ScannerExample {public static void main (String args) {// Új Scanner Scanner kezdeményezése userInputScanner = new Scanner (System.in); // nextLine tesztelése (); System.out.print ("\ nMi a neved?"); Karakterlánc neve = userInputScanner.nextLine (); // tesztelés nextInt (); logikai érvényesInput = false; int numberOfCats = 0; while (! validInput) {System.out.print ("Hány macskád van?"); String input = userInputScanner.nextLine (); try {numberOfCats = Integer.parseInt (input); validInput = igaz; } catch (NumberFormatException e) {validInput = false; }} // Testing nextDouble (); validInput = hamis; dupla pénzInWallet = 0,0; while (! validInput) {System.out.print ("Mennyi pénz van a pénztárcájában? $"); String input = userInputScanner.nextLine (); try {moneyInWallet = Double.parseDouble (input); validInput = igaz; } catch (NumberFormatException e) {validInput = false; }} System.out.println ("\ nSzia" + név + "!" + NumberOfCats + (numberOfCats> 1? "Cicák": "macska") + "és $" + moneyInWallet + "van a pénztárcájában. / n "); }}
Vegye figyelembe, hogy itt nem kellett importálnunk a
NumberFormatException
A puffert sem kellett törölnünk a használatával
userInputScanner.nextLine ();
Tippek
- A Scanner osztály használatával kapcsolatos további információkért lásd a Scanner API -t.
- A következő szó olvasásához mindig a.next () kifejezést használja a.nextLine () helyett, mivel a.nextLine () hibás lehet.