Podczas programowania w Javie lub dowolnym innym języku najprawdopodobniej będziesz musiał użyć informacji wejściowych od użytkownika. Java udostępnia wiele różnych metod uzyskiwania informacji o użytkowniku, ale najbardziej powszechną i być może najłatwiejszą do zaimplementowania metodą jest użycie obiektu Scanner.
Kroki
Metoda 1 z 2: Filmy
Krok 1. Zaimportuj klasę Scanner
Możesz wybrać importowanie
java.util. Scanner
klasa lub cała
java.util
pakiet. Aby zaimportować klasę lub pakiet, dodaj jeden z następujących wierszy na samym początku kodu:
importować java.util. Scanner; // Spowoduje to zaimportowanie tylko klasy Scanner. import java.util.*; // Spowoduje to zaimportowanie całego pakietu java.util.
Krok 2. Zainicjuj nowy obiekt Skanera, przekazując
System.in
strumień wejściowy do konstruktora.
System.in
to standardowy strumień wejściowy, który jest już otwarty i gotowy do dostarczania danych wejściowych. Zazwyczaj ten strumień odpowiada wprowadzaniu z klawiatury.
Skaner userInputScanner = nowy skaner(System.in);
Krok 3. Przeczytaj różne rodzaje danych wejściowych, które wprowadza użytkownik
Klasa Scanner wspiera pobieranie prymitywów, takich jak int, byte, short, long oraz ciągów znaków.
-
Oto kilka metod dostępnych w klasie Scanner:
-
Przeczytaj bajt -
następny bajt()
-
Przeczytaj krótki -
następnyKrótki()
-
Przeczytaj int -
następnyInt()
-
Przeczytaj długo -
następnyDługi()
-
Przeczytaj pływak -
następnyFloat()
-
Przeczytaj podwójne -
następnyPodwójny()
-
Przeczytaj wartość logiczną -
następnaBoolean()
-
Przeczytaj całą linię -
następnaLinia()
-
Przeczytaj słowo -
Następny()
-
-
Oto przykład programu, który używa różnych metod klasy Scanner w celu uzyskania różnych typów danych wejściowych:
importować java.util. Scanner; public class ScannerExample { public static void main(String args) { // Zainicjuj nowy skaner userInputScanner = new Scanner(System.in); // Testowanie nextLine(); System.out.println("\nJak masz na imię? "); Nazwa ciągu = userInputScanner.nextLine(); // Testowanie nextInt(); System.out.print("Ile masz kotów? "); int liczbaKotów = userInputScanner.nextInt(); // Testowanie nextDouble(); System.out.print("Ile pieniędzy masz w portfelu? $"); double moneyInWallet = userInputScanner.nextDouble(); System.out.println("\nHello " + name + "! Masz w portfelu " + numberOfCats + (numberOfCats > 1 ? " cats": " cat") + " i $" + moneyInWallet + ".\n"); } }
Metoda 2 z 2: Obsługa wyjątków
Krok 1. Obsługa wyjątków wejściowych
jakiś
InputMismatchException
jest generowany, gdy użytkownik wprowadzi dane, które nie są zgodne z żądanym typem. Na przykład, jeśli użytkownik wprowadzi String, gdy zostanie poproszony o int, program wyrzuci
InputMismatchException
i wyjdź. Istnieje kilka sposobów obsługi tego wyjątku i rozwiązania tego problemu, aby Twój program był niezawodny.
Krok 2. Użyj bloku try-catch, aby obsłużyć
InputMismatchException
.
import java.util. InputMismatchException; importować java.util. Scanner; public class ScannerExample { public static void main(String args) { // Zainicjuj nowy skaner userInputScanner = new Scanner(System.in); // Testowanie nextLine(); System.out.print("\nJak masz na imię? "); Nazwa ciągu = userInputScanner.nextLine(); // Testowanie nextInt(); wartość logiczna prawidłowe wejście = fałsz; int liczbaKotów = 0; while (!validInput) { System.out.print("Ile masz kotów? "); spróbuj { liczbaKotów = userInputScanner.nextInt(); prawidłowe wejście = prawda; } catch (InputMismatchException e) { validInput = false; userInputScanner.nextLine(); } } // Testowanie nextDouble(); prawidłowe wejście = fałsz; podwójne pieniądze w portfelu = 0,0; while (!validInput) { System.out.print("Ile pieniędzy masz w portfelu? $"); spróbuj { moneyInWallet = userInputScanner.nextDouble(); userInputScanner.nextLine(); prawidłowe wejście = prawda; } catch (InputMismatchException e) { validInput = false; userInputScanner.nextLine(); } } System.out.println("\nHello " + name + "! Masz w portfelu " + numberOfCats + (numberOfCats > 1 ? " cats": "cat") + " i $" + moneyInWallet + ".\ n"); } }
Pamiętaj, że musimy importować
java.util. InputMismatchException
w celu korzystania z
InputMismatchException
Dodawanie
userInputScanner.nextLine();
Krok 3. Ewentualnie spraw, aby dane wejściowe użytkownika były niezawodne, pobierając tylko kolejne wiersze ze skanera
W ten sposób możemy zapewnić, że wszystko, co zwróci Scanner, będzie obiektem typu String i nie stworzy żadnych wyjątków. Następnie, aby przekonwertować łańcuchy na liczby całkowite lub podwójne, możemy użyć klas opakowujących Integer i Double.
importować java.util. Scanner; public class ScannerExample { public static void main(String args) { // Zainicjuj nowy skaner userInputScanner = new Scanner(System.in); // Testowanie nextLine(); System.out.print("\nJak masz na imię? "); Nazwa ciągu = userInputScanner.nextLine(); // Testowanie nextInt(); wartość logiczna prawidłowe wejście = fałsz; int liczbaKotów = 0; while (!validInput) { System.out.print("Ile masz kotów? "); Ciąg wejściowy = userInputScanner.nextLine(); spróbuj { liczbaKotów = Integer.parseInt(wejście); prawidłowe wejście = prawda; } catch (NumberFormatException e) { validInput = false; } } // Testowanie nextDouble(); prawidłowe wejście = fałsz; podwójne pieniądze w portfelu = 0,0; while (!validInput) { System.out.print("Ile pieniędzy masz w portfelu? $"); Ciąg wejściowy = userInputScanner.nextLine(); spróbuj { moneyInWallet = Double.parseDouble(input); prawidłowe wejście = prawda; } catch (NumberFormatException e) { validInput = false; } } System.out.println("\nHello " + name + "! Masz w portfelu " + numberOfCats + (numberOfCats > 1 ? " cats": "cat") + " i $" + moneyInWallet + ".\ n"); } }
Zauważ, że tutaj nie musieliśmy importować
NumberFormatException
Nie musieliśmy też czyścić bufora za pomocą
userInputScanner.nextLine();
Porady
- Więcej informacji na temat korzystania z klasy Scanner znajdziesz w interfejsie Scanner API.
- Zawsze używaj.next() zamiast.nextLine() do czytania następnego słowa, ponieważ.nextLine() może być błędna.