I just announced the new Spring Boot 2 material, coming in REST With Spring:

>> CHECK OUT THE COURSE

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.

As always, the code samples from this tutorial are provided over on GitHub.

I just announced the new Spring Boot 2 material, coming in REST With Spring:

>> CHECK OUT THE LESSONS