Kai programuojate „Java“ar bet kuria kita kalba, greičiausiai turėsite naudoti vartotojo įvesties informaciją. „Java“siūlo daugybę skirtingų būdų, kaip įvesti vartotojo informaciją, tačiau labiausiai paplitęs ir galbūt lengviausiai įgyvendinamas metodas yra naudoti „Scanner“objektą.
Žingsniai
1 metodas iš 2: vaizdo įrašai
Žingsnis 1. Importuokite skaitytuvo klasę
Galite pasirinkti importuoti
java.util. Scanner
klasę ar visą
java.util
paketas. Norėdami importuoti klasę ar paketą, prie pat kodo pradžios pridėkite vieną iš šių eilučių:
importuoti java.util. Scanner; // Tai importuos tik „Scanner“klasę. importuoti java.util.*; // Tai importuos visą java.util paketą.
Žingsnis 2. Inicijuokite naują skaitytuvo objektą praleisdami
System.in
įvesties srautą į konstruktorių.
System.in
yra standartinis įvesties srautas, kuris jau yra atidarytas ir paruoštas teikti įvesties duomenis. Paprastai šis srautas atitinka klaviatūros įvestį.
Skaitytuvas userInputScanner = naujas skaitytuvas (System.in);
Žingsnis 3. Perskaitykite įvairių tipų įvesties duomenis, kuriuos įveda vartotojas
„Scanner“klasė palaiko primityvų, tokių kaip int, baitas, trumpas ir ilgas, gavimą, be to, kad gauna eilutes.
-
Štai keletas metodų, kuriuos galima naudoti naudojant „Scanner“klasę:
-
Skaityti baitą -
nextByte ()
-
Skaitykite trumpai -
nextShort ()
-
Skaitykite int -
nextInt ()
-
Skaityk ilgai -
nextLong ()
-
Skaitykite plūdę -
nextFloat ()
-
Skaityk dvigubai -
nextDouble ()
-
Skaitykite loginį žodį -
nextBoolean ()
-
Perskaitykite visą eilutę -
nextLine ()
-
Perskaityk žodį -
Kitas()
-
-
Čia yra programos, kuri naudoja skirtingus „Scanner“klasės metodus, kad gautų įvairių tipų įvestis, pavyzdys:
importuoti java.util. Scanner; public class ScannerExample {public static void main (String args) {// Inicijuokite naują skaitytuvo skaitytuvą userInputScanner = new Scanner (System.in); // Testing nextLine (); System.out.println ("\ nKas tavo vardas?"); Eilutės pavadinimas = userInputScanner.nextLine (); // Testing nextInt (); System.out.print ("Kiek turite kačių?"); int numberOfCats = userInputScanner.nextInt (); // Testing nextDouble (); System.out.print ("Kiek pinigų yra jūsų piniginėje? $"); dvigubi pinigaiInWallet = userInputScanner.nextDouble (); System.out.println ("\ nSveiki" + vardas + "! Jūsų piniginėje yra" + numberOfCats + (numberOfCats> 1? "Katės": "katė") + "ir $" + moneyInWallet + ". / N"); }}
2 metodas iš 2: išimčių tvarkymas
Žingsnis 1. Tvarkykite įvesties išimtis
An
„InputMismatchException“
išmeta, kai vartotojas įveda duomenis, kurie neatitinka prašomo tipo. Pavyzdžiui, jei vartotojas įveda eilutę, kai prašoma int, programa išmeta
„InputMismatchException“
ir išeiti. Yra keletas būdų, kaip išspręsti šią išimtį ir išspręsti šią problemą, kad jūsų programa būtų nepriekaištinga.
Žingsnis 2. Naudokite try-catch bloką, kad galėtumėte tvarkyti
„InputMismatchException“
.
importuoti java.util. InputMismatchException; importuoti java.util. Scanner; public class ScannerExample {public static void main (String args) {// Inicijuokite naują skaitytuvo skaitytuvą userInputScanner = new Scanner (System.in); // Testing nextLine (); System.out.print ("\ nKas tavo vardas?"); Eilutės pavadinimas = userInputScanner.nextLine (); // Testing nextInt (); loginis loginis validInput = false; int numberOfCats = 0; while (! validInput) {System.out.print ("Kiek turite kačių?"); pabandykite {numberOfCats = userInputScanner.nextInt (); validInput = tiesa; } catch (InputMismatchException e) {validInput = false; userInputScanner.nextLine (); }} // Testing nextDouble (); validInput = false; dvigubi pinigaiInWallet = 0,0; while (! validInput) {System.out.print ("Kiek pinigų yra jūsų piniginėje? $"); pabandykite {moneyInWallet = userInputScanner.nextDouble (); userInputScanner.nextLine (); validInput = tiesa; } catch (InputMismatchException e) {validInput = false; userInputScanner.nextLine (); }} System.out.println ("\ nSveiki" + vardas + "! Jūsų piniginėje yra" + numberOfCats + (numberOfCats> 1? "Katės": "katė") + "ir $" + moneyInWallet + ". / n "); }}
Atminkite, kad turime importuoti
java.util. InputMismatchException
norint naudotis
„InputMismatchException“
Pridedant
userInputScanner.nextLine ();
3 veiksmas. Arba padarykite vartotojo įvestį nepriekaištingą, tik paimdami kitas skaitytuvo eilutes
Tokiu būdu galime užtikrinti, kad viskas, ką grąžina skaitytuvas, yra eilutės objektas ir nesukurs jokių išimčių. Tada, norėdami konvertuoti eilutes į sveikus skaičius ar dvigubas, galime naudoti „Integer“ir „Double“apvyniojimo klases.
importuoti java.util. Scanner; public class ScannerExample {public static void main (String args) {// Inicijuokite naują skaitytuvo skaitytuvą userInputScanner = new Scanner (System.in); // tikrinama nextLine (); System.out.print ("\ nKas tavo vardas?"); Eilutės pavadinimas = userInputScanner.nextLine (); // Testing nextInt (); loginis loginis validInput = false; int numberOfCats = 0; while (! validInput) {System.out.print ("Kiek turite kačių?"); Eilutės įvestis = userInputScanner.nextLine (); pabandykite {numberOfCats = Integer.parseInt (įvestis); validInput = tiesa; } catch (NumberFormatException e) {validInput = false; }} // Testing nextDouble (); validInput = false; dvigubi pinigaiInWallet = 0,0; while (! validInput) {System.out.print ("Kiek pinigų yra jūsų piniginėje? $"); Eilutės įvestis = userInputScanner.nextLine (); pabandykite {moneyInWallet = Double.parseDouble (įvestis); validInput = tiesa; } catch (NumberFormatException e) {validInput = false; }} System.out.println ("\ nSveiki" + vardas + "! Jūsų piniginėje yra" + numberOfCats + (numberOfCats> 1? "Katės": "katė") + "ir $" + moneyInWallet + ". / n "); }}
Atminkite, kad čia mums nereikėjo importuoti
NumberFormatException
Mes taip pat neturėjome išvalyti buferio naudodami
userInputScanner.nextLine ();
Patarimai
- Daugiau informacijos apie „Scanner“klasės naudojimą ieškokite „Scanner“API.
- Visada naudokite.next () vietoj.nextLine (), kad perskaitytumėte kitą žodį, nes.nextLine () gali būti klaidingas.