# Console Input — Core Java

Source: https://www.geekswithgeeks.com/en/core-java/java-input

> Read keyboard input in Java with Scanner over System.in, use nextInt / nextDouble / nextLine, and avoid the classic leftover-newline bug.

## Scanner

Wrap `System.in` in a `Scanner`. Use `nextInt()`, `nextDouble()`, `nextLine()` to read typed tokens. Close it when done (or use try-with-resources).

```java
import java.util.Scanner;

try (Scanner in = new Scanner(System.in)) {
    System.out.print("Name: ");
    String name = in.nextLine();
    System.out.print("Age: ");
    int age = in.nextInt();
    System.out.printf("%s is %d%n", name, age);
}
```

## The nextLine() trap

After `nextInt()`, the newline you pressed is still in the buffer, so the next `nextLine()` returns an empty string. Call an extra `nextLine()` to consume it.
