Let's get started with a Microservice Architecture with Spring Cloud:
Read and Write User Input in Java
Last updated: January 8, 2024
1. Introduction
In this quick tutorial, we’llĀ demonstrate several ways to use a console for user input and outputĀ in Java.
We’ll have a look at a few methods of theĀ Scanner class for handling input, and then we’ll show some simple output using System.out.
Finally, we’ll see how to use the Console class, available since Java 6, for both console input and output.
2. Reading from System.in
For our first examples, we’ll use theĀ ScannerĀ class in theĀ java.utilĀ package to obtain the input fromĀ System.in ā the “standard” input stream:
Scanner scanner = new Scanner(System.in);
Let’s use theĀ nextLine() method to read an entire line of input as a String and advance to the next line:
String nameSurname = scanner.nextLine();
We can also useĀ theĀ next()Ā method to get the next input tokenĀ from the stream:
String gender = scanner.next();
If we’re expecting numeric inputs, we can useĀ nextInt()Ā to get the next input as an intĀ primitive, and, similarly, we can useĀ nextDouble()Ā to get a variable of type double:
int age = scanner.nextInt();
double height = scanner.nextDouble();
TheĀ ScannerĀ class also offersĀ hasNext_Prefix()Ā methods which returnĀ true if the next token can be interpreted as a corresponding data type.
For example, we can use hasNextInt()Ā method to check if the next token can be interpreted as an integer:
while (scanner.hasNextInt()) {
int nmbr = scanner.nextInt();
//...
}
Also, we can use theĀ hasNext(Pattern pattern)Ā method to check if the following input token matches a pattern:
if (scanner.hasNext(Pattern.compile("www.baeldung.com"))) {
//...
}
Besides using the Scanner class, we can alsoĀ use anĀ InputStreamReader withĀ System.inĀ to get the input from the console:
BufferedReader buffReader = new BufferedReader(new InputStreamReader(System.in));
And then we can read input and parse it to an integer:
int i = Integer.parseInt(buffReader.readLine());
3. Writing to System.out
For console output, we can use System.outĀ ā an instance of the PrintStream class,Ā which is a type of OutputStream.
In our example, we’ll use console output to provide a prompt for user input and display a final message to a user.
Let’sĀ use theĀ println()Ā method to print a String and terminate the line:
System.out.println("Please enter your name and surname: ");
Alternately, we can use theĀ print()Ā method, which works similarly toĀ println(), but without terminating the line:
System.out.print("Have a good");
System.out.print(" one!");
4. Using the Console Class for Input and Output
In JDK 6 and later, we can use theĀ ConsoleĀ class from java.ioĀ package to read from and write to the console.
To obtain a Console object, we’ll callĀ System.console():
Console console = System.console();
Next, let’s use theĀ readLine()Ā method of theĀ ConsoleĀ class to write a line to the console and then read a line from the console:
String progLanguauge = console.readLine("Enter your favourite programming language: ");
If we need to read sensitive information, such as a password, we can use theĀ readPassword() method to prompt a user for a password andĀ read the password from the console with echoing disabled:
char[] pass = console.readPassword("To finish, enter password: ");
We can also use the Console class to write output to the console, for example, using theĀ printf()Ā method with a StringĀ argument:
console.printf(progLanguauge + " is very interesting!");
5. Conclusion
In this article, we showed how to use several Java classes to perform console user input and output.
The code backing this article is available on GitHub. Once you're logged in as a Baeldung Pro Member, start learning and coding on the project.
















