Kuidas saada Java-sisend kasutajalt

Javas või mõnes muus keeles programmeerimisel peate suure tõenäosusega kasutama kasutajalt saadud sisendteavet. Java pakub kasutajateabe saamiseks palju erinevaid meetodeid, kuid kõige levinum ja võib-olla ka lihtsamini rakendatav meetod on kasutada skanneriobjekti.

1
Importige skanneri klass. Saate importida klassi java.util.Scanner või kogu java.util paketi. Klassi või paketi importimiseks lisage oma koodi algusesse üks järgmistest ridadest:import java.util.Scanner; // See impordib ainult faili Scanner class.import java.util.*; // See impordib kogu java.utili paketi.

2
Initsialiseerige uus skanneriobjekt, edastades konstruktorile sisendvoo System.in. System.in on standardne sisendvoog, mis on juba avatud ja valmis sisendandmete edastamiseks. Tavaliselt vastab see voog klaviatuuri sisendile.Skanneri kasutajaInputSkanner = new Skanneri(System.in);

3
Lugege sisse erinevat tüüpi sisendandmeid, mida kasutaja sisestab. Klass Scanner toetab lisaks stringide hankimisele ka primitiivide hankimist, nagu int, byte, short, long. Siin on mõned meetodid, mis on saadaval klassis Scanner:Baiti lugemine – nextByte()Lühikese lugemine – nextShort()Int lugemine – nextInt()Pika lugemine – nextLong()Ujuki lugemine – nextFloat()Duubli lugemine – nextDouble()Loe tõeväärtust – nextBoolean()Loe terve rida – nextLine()Loe sõna – next()Siin on näide programmist, mis kasutab erinevat tüüpi sisendi saamiseks klassi Scanner erinevaid meetodeid:import java .util.Scanner;public class SkannerNäide { public static void main(String[] args) { // Käivitage uus skanneri skanner userInputScanner = new Scanner(System.in); // Testimine nextLine(); System.out.println(“nMis su nimi on? “); Stringi nimi = userInputScanner.nextLine(); // Testimine nextInt(); System.out.print(“Mitu kassi teil on? “); int Kasside arv = userInputScanner.nextInt(); // Testimine nextDouble(); System.out.print(“Kui palju raha teie rahakotis on? $”); double moneyInWallet = userInputScanner.nextDouble(); System.out.println(“nTere ” + nimi + “! Teie rahakotis on ” + numberOfCats + (Kasside arv > 1 ? ” cats” : ” cat”) + ” ja $” + moneyInWallet + “.n” ); }}

4
Käsitlege sisendi erandeid. InputMismatchException kuvatakse, kui kasutaja sisestab andmed, mis ei ühti taotletud tüübiga. Näiteks kui kasutaja sisestab stringi, kui int küsitakse, viskab programm välja InputMismatchException ja väljub. Selle erandi käsitlemiseks ja probleemi lahendamiseks on mitu võimalust, et teie programm oleks lollikindel.

5
Kasutage proovivõtuplokki, et käsitleda faili InputMismatchException.import java.util.InputMismatchException;import java.util.Scanner;public class ScannerExample { public static void main(String[] args) { // Käivitage uus skanneri skanner userInputScanner = new skanner (System.in); // Testimine nextLine(); System.out.print(“nMis on teie nimi? “); Stringi nimi = userInputScanner.nextLine(); // Testimine nextInt(); tõeväärtus validInput = väär; int kasside arv = 0; while (!validInput) { System.out.print(“Mitu kassi teil on? “); try { numberOfCats = userInputScanner.nextInt(); validInput = tõene; } püüdmine (InputMismatchException e) { validInput = false; userInputScanner.nextLine(); } } // Testimine nextDouble(); validInput = vale; topeltraha rahakotis = 0,0; while (!validInput) { System.out.print(“Kui palju raha teie rahakotis on? $”); try { moneyInWallet = userInputScanner.nextDouble(); userInputScanner.nextLine(); validInput = tõene; } püüdmine (InputMismatchException e) { validInput = false; userInputScanner.nextLine(); } } System.out.println(“nTere ” + nimi + “! Teie rahakotis on ” + numberOfCats + (numberOfCats > 1 ? ” cats” : “cat”) + ” ja $” + moneyInWallet + “. n”); }}Pange tähele, et klassi InputMismatchException kasutamiseks peame importima faili java.util.InputMismatchException.Kasutame ajatsüklit, et küsida kasutajalt sama küsimust, kuni kasutaja sisestab õige sisendi.UsutajaInputScanneri lisamine.nextLine(); proovi püüdmise osas tagab, et skanner tunnistab kasutaja sisestusklahvi vajutamise ja toimib sisestuspuhvri tühjendamiseks.

6
Teise võimalusena muutke kasutaja sisestus lollikindlaks, võttes skannerist sisse ainult järgmised read. Nii saame tagada, et kõik, mille skanner tagastab, on stringobjekt ega loo erandeid. Seejärel saame stringide täisarvudeks või topeltarvudeks teisendamiseks kasutada täisarvu ja topeltmähiseid classes.import java.util.Scanner;public class ScannerExample { public static void main(String[] args) { // Käivitage uus skanneri skanner userInputScanner = uus skanner(System.in); // Testimine nextLine(); System.out.print(“nMis on teie nimi? “); Stringi nimi = userInputScanner.nextLine(); // Testimine nextInt(); tõeväärtus validInput = väär; int kasside arv = 0; while (!validInput) { System.out.print(“Mitu kassi teil on? “); Stringi sisend = userInputScanner.nextLine(); try { numberOfCats = Integer.parseInt(input); validInput = tõene; } püüdmine (NumberFormatException e) { validInput = false; } } // Testimine nextDouble(); validInput = vale; topeltraha rahakotis = 0,0; while (!validInput) { System.out.print(“Kui palju raha teie rahakotis on? $”); Stringi sisend = userInputScanner.nextLine(); try { moneyInWallet = Double.parseDouble(input); validInput = tõene; } püüdmine (NumberFormatException e) { validInput = false; } } System.out.println(“nTere ” + nimi + “! Teie rahakotis on ” + numberOfCats + (numberOfCats > 1 ? ” cats” : “cat”) + ” ja $” + moneyInWallet + “. n”); }}Pange tähele, et siin ei pidanud me importima klassi NumberFormatException, kuna see on osa paketist java.lang, mis tähendab, et see on sisse ehitatud. Samuti ei pidanud me puhvrit tühjendama, kasutades userInputScanner.nextLine(); püüdmise osas proovi-püük.