# Java Get User Input from Console

> Use the Scanner class with nextLine(), nextInt(), and nextDouble() to read user input, with try-catch for invalid input

**URL:** https://sentry.io/answers/how-to-get-user-input-in-java/

---

## The Problem

I don't know how to get user input from the console in Java.

## The Solution

The most common way to get user input in Java is to use the `Scanner` class from the `java.util` package.

For example, the following code uses `Scanner` with methods such as `nextLine()` to retrieve different data inputs:

```java
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.print("Enter your name: ");
        String name = scanner.nextLine(); // Read a full line of text
        System.out.println("Hello, " + name + "!");

        System.out.print("Enter your age: ");
        int age = scanner.nextInt(); // Read an integer input
        System.out.println("You are " + age + " years old.");

        System.out.print("Enter a decimal number: ");
        double number = scanner.nextDouble(); // Read a double input
        System.out.println("You entered: " + number);

        scanner.close(); // Close the scanner to free resources
    }
}
```

This demonstrates the following commonly used methods for reading user input:

- The `nextLine()` method reads a full line of text.
- The `nextInt()` method reads an integer.
- The `nextDouble()` method reads a double.

While each method gets a different data type, the Java `Scanner` class does not offer a native means of reading character input.

If you need to read a single character, you can use `nextLine()` to fetch a line of text, then extract the first character of that line:

```java
System.out.print("Enter a character: ");
char ch = scanner.nextLine().charAt(0); // Read first character from input
System.out.println("You entered: " + ch);
```

You can use try-catch blocks to prevent the program from crashing when invalid input is entered:

```java
import java.util.InputMismatchException;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        try {
            System.out.print("Enter an integer: ");
            int number = scanner.nextInt();
            System.out.println("You entered: " + number);
        } catch (InputMismatchException e) {
            System.out.println("Invalid input! Please enter a valid integer.");
        }

        scanner.close();
    }
}
```

## Further Reading

- The [Java `Scanner`](https://docs.oracle.com/en/java/javase/22/docs/api/java.base/java/util/Scanner.html) documentation
- The [Java `InputMismatchException`](https://docs.oracle.com/en/java/javase/22/docs/api/java.base/java/util/InputMismatchException.html) documentation

---

*Source: [sentry.io/answers/how-to-get-user-input-in-java/](https://sentry.io/answers/how-to-get-user-input-in-java/)*
