Typowe programy pracują z danymi, które muszą być wprowadzone i wyjściowe przez użytkownika. W tym samouczku zbadamy, jak w Java można przetwarzać wprowadzanie od użytkownika i efektywnie tworzyć wyjścia. Istnieją różne sposoby zbierania lub dostarczania informacji. W tym przypadku rozróżnienie między wyjściami na konsolę a wyjściami błędów odgrywa ważną rolę. Dowiesz się również, jak skutecznie wczytywać dane, czy to przez konsolę, czy przez graficzne interfejsy użytkownika.
Najważniejsze wnioski
- Java oferuje kilka sposobów obsługi wprowadzania i wyjścia danych.
- Ważne jest, aby rozdzielić wyjścia i błędy.
- Scanner to przydatne narzędzie do wczytywania danych od użytkownika.
Podstawowe wyjście z System.out
Pierwszym krokiem w pracy z wyjściami w Java jest zarządzanie System.out, które reprezentuje standardowe wyjście. Z klasą PrintStream, która reprezentuje System.out, możesz wysyłać wyjścia do konsoli.
Aby wygenerować wyjście tekstowe, możesz po prostu użyć System.out.print lub System.out.println. println kończy wiersz po wyjściu, podczas gdy print tego nie robi. Jeśli chcesz, aby następne wyjście miało miejsce w tym samym wierszu, używasz print.

Możesz wykonać program w następujący sposób:
To wyjście będzie wyświetlone na konsoli i możesz dostosować program, aby wypisywał więcej informacji.
Wyjścia błędów z System.err
Dla wyjść błędów zaleca się użycie System.err. To daje przewagę, że błędy i regularne wyjścia są wyraźnie oddzielone. Błędy mogą być wizualnie wyróżnione, na przykład przez użycie innego koloru na konsoli (często czerwonego).
Gdy wystąpi błąd, możesz użyć System.err.print lub System.err.println, aby wypisać konkretny błąd:

Oto przykład komunikatu o błędzie:
Dzięki rozdzieleniu regularnych wyjść i komunikatów o błędach możesz zwiększyć czytelność i zrozumiałość wyjść w swoim programie.
Wprowadzanie z System.in i Scannerem
Aby otrzymać wpisy od użytkownika, korzystamy z System.in. W tym celu zaleca się użycie klasy Scanner z pakietu java.util. Scanner upraszcza wczytywanie danych, rozpoznając różne typy danych automatycznie i zwracając wprowadzenie jako ciąg znaków.
Najpierw musisz zaimportować Scanner:

Następnie możesz utworzyć instancję Scanner'a i przekazać System.in:
Teraz masz możliwość odczytywania wejść w swoim programie.
Rejestrowanie wpisów użytkownika
Aby pobrać dane od użytkownika, możesz użyć nextLine(). Umożliwia to rejestrowanie pełnej linii jako ciągu znaków. Typowym przykładem może być wprowadzenie wieku użytkownika.
Oto przykład wprowadzania od użytkownika:

W tym przykładzie użytkownik jest proszony o podanie swojego wieku, a program następnie zwraca wprowadzone informacje.
Interakcje użytkownika z graficznymi dialogami
Jeśli chcesz użyć graficznego interfejsu użytkownika (GUI), możesz wykorzystać klasę JOptionPane z pakietu javax.swing. Umożliwia to rejestrowanie danych w standardowym oknie dialogowym, co może być nieco bardziej przyjazne dla użytkownika.

To wyświetla graficzny dialog, w którym użytkownik może wpisać swój wiek.
Walidacja wprowadzonych danych użytkownika
Ważne jest walidowanie danych, które pochodzą od użytkownika. Powinieneś upewnić się, że wiek w rzeczywistości jest w akceptowalnym formacie, na przykład jako liczba całkowita. W tym celu możesz spróbować przekonwertować ciąg na liczbę i pracować z wyjątkami.

Dzięki wdrożeniu tych walidacji chronisz swój program przed nieoczekiwanymi danymi wejściowymi.
Podsumowanie – optymalizacja wprowadzania i wyjścia w Java
Teraz poznałeś podstawowe koncepcje dotyczące wprowadzania i wyjścia w Java. Rozróżnienie między standardowymi wyjściami a komunikatami o błędach jest fundamentalne, aby stworzyć jasność w komunikacji programowej. Ponadto użycie Scanner'a oraz możliwość implementacji graficznych dialogów dostarczają elastycznych rozwiązań do wprowadzania danych.
Najczęściej zadawane pytania
Jaką klasę używam do standardowego wyjścia?Używasz System.out, aby wyświetlić wyjścia w oknie konsoli.
Jak mogę wypisać komunikaty o błędach?Użyj System.err do wypisywania komunikatów o błędach, aby oddzielić je od regularnych wyjść.
Jak rejestruję wprowadzenia użytkownika w konsoli?Scanner z java.util jest idealny do rejestrowania wprowadzeń użytkownika z System.in.
Czy mogę używać graficznych okien dialogowych do wprowadzania danych?Tak, poprzez JOptionPane z javax.swing możesz używać graficznych dialogów do wprowadzania.
Czy muszę walidować wprowadzenia użytkownika?Tak, walidacja wprowadzeń jest ważna, aby unikać błędów i nieoczekiwanych wprowadzeń.