Pobieranie danych od użytkownika - Basic I/O
Pobieranie pojedynczych znaków z klawiatury - System.in.read():
import java.lang.*;
public class SystemInReadTest1 {
public static void main( String[] args ) throws Exception {
outer:
while (true)
{
System.out.println( "Start..." );
while (true)
{
System.out.println("Naciśnij n - \"nowy obieg\" lub k - \"koniec\".");
int ch = System.in.read();
while( System.in.read() != '\n' );
if (ch == 'n')
break;
if (ch == 'k')
break outer;
}
}
}
}
Klasa Scanner
Przykład użycia klasy java.util.Scanner do analizowania strumienia wejściowego i pobierania prostych typów danych oraz ciągów znaków. Skaner dzieli strumień wejściowy na fragmenty (tokeny), używając określonych znaków separatora, którymi domyślnie są spacje. Następnie, poszczególne fragmenty mogą zostać pobrane i skonwertowane na różne typy danych przy użyciu odpowiednich metod next... (np. nextBoolean(), nextInt(), nextBigInteger() albo nextLine() itp.).
Szczegółowy opis klasy Scanner: https://docs.oracle.com/javase/8/docs/api/java/util/Scanner.html
Przykład - dla uproszczenia bez uwzględnienia obsługi wyjątków - patrz Wyjątki - Exceptions:
import java.util.*;
public class UserInputReader {
static Scanner sc = new Scanner( System.in );
public static void main(String[] args) {
String str = "Hello!\n To jest drugi wiersz.";
// create a new scanner with the specified String Object
Scanner scanner = new Scanner( str );
// print the next line
System.out.println( scanner.nextLine() );
// check if there is a next line again
System.out.println( scanner.hasNextLine() );
// print the next line
System.out.println( scanner.nextLine() );
// check if there is a next line again
System.out.println( scanner.hasNextLine() );
// close the scanner
scanner.close();
System.out.print("Podaj imię: ");
String userInput = getUserTextInput();
System.out.println( "Twoje imię: " + userInput );
System.out.print("Podaj wartość całkowitą: ");
System.out.println( sc.nextInt() );
}
public static String getUserTextInput() {
return sc.nextLine();
}
}
Wynik:
Hello!
true
To jest drugi wiersz.
false
Podaj imię:
Teraz program czeka, aż użytkownik wprowadzi wiersz danych.
Po wprowadzeniu danych zostaną one wyświetlony w kolejnym wierszu:
Hello!
true
To jest drugi wiersz.
false
Podaj imię: hhhahaha
hhhahaha
Następnie użytkownik będzie mógł wprowadzić wartość całkowitą...
UWAGA! Ta wersja programu nie jest odporna na podanie nieprawidłowego typu danych. Jeśli zamiast wartości całkowitej wprowadzisz np. łańcuch zwykłych znaków, wówczas wystąpi wyjątek (EXCEPTION). Informacje o obsludze wyjątków znajdziesz w następnej sekcji Wyjątki - Exceptions.
Użycie klasy InputStreamReader opakowanej w klasę BufferedReader - patrz przykładowy program ExceptionTestProgram5 w następnej sekcji Wyjątki - Exceptions.