Open In App

Java User Input – Scanner Class

Last Updated : 22 Apr, 2025
Comments
Improve
Suggest changes
Like Article
Like
Report

The most common way to take user input in Java is using the Scanner class. It is a part of java.util package. The scanner class can handle input from different places, like as we are typing at the console, reading from a file, or working with data streams. This class was introduced in Java 5. Before that, we used the BufferedReader class (introduced in Java 1.1). As a beginner, we will suggest to use Scanner class.

Using Scanner in Our Code

Follow these steps to take user input using Scanner class:

  • Import the Scanner class using import java.util.Scanner;
  • Create the Scanner object and connect Scanner with System.in by passing it as an argument i.e., Scanner sc = new Scanner(System.in);
  • When we want to ask the user for input, first print a prompt message so they know what to enter. Then use one of Scanner’s handy methods to read the response:
    • nextInt() for whole numbers
    • nextLine() for full text lines
    • nextDouble() for decimal numbers
    • next() for single words

Example: Let us go through a simple example where we get two numbers from the user and add them together:

Java
// Taking user inputimportjava.util.Scanner;classGeeks{publicstaticvoidmain(String[]args){// Creating Scanner class objectScannerscn=newScanner(System.in);// Enter first inputSystem.out.print("Enter First Number: ");inta=scn.nextInt();System.out.print("Enter Second Number: ");intb=scn.nextInt();System.out.println("Sum: "+(a+b));// Closing the scanner to release resourcesscn.close();}}

Output:

Output


Methods of Scanner Class

We have discussed few methods of Scanner class above, but the Scanner class provides some more methods to read different data types, let us discuss those in the below table:

Method

Description

                          nextBoolean()                       

Used for reading Boolean value.

nextByte()

Used for reading Byte value.

nextDouble()

Used for reading Double value.

nextFloat()

Used for reading Float value.

nextInt()

Used for reading Int value.

nextLine()

Used for reading Line value.

nextLong()

Used for reading Long value.

nextShort()

Used for reading Short value.


Example: Here, we are taking multiple user inputs like string, float, double etc. and using the above mentioned methods of Scanner Class.

Java
// Taking multiple user input using Scanner Classimportjava.util.Scanner;publicclassGeeks{publicstaticvoidmain(String[]args){// Scanner definitionScannerscn=newScanner(System.in);// input is a string(one word)System.out.print("Enter a word: ");Stringstr1=scn.nextLine();System.out.println("Entered String str1: "+str1);// input is a string(complete sentence)System.out.print("Enter a sentence: ");Stringstr2=scn.nextLine();System.out.println("Entered String str2: "+str2);// input is an integerSystem.out.print("Enter an integer: ");intx=Integer.parseInt(scn.nextLine());System.out.println("Entered Integer: "+x);// input is a float valueSystem.out.print("Enter a float value: ");floatf=Float.parseFloat(scn.nextLine());System.out.println("Entered FloatValue: "+f);scn.close();}}

Output:

Output

2


Another method to take user input is using BufferedReader Class. It is a simple class that is used to read a sequence of characters. It provides several methods, including:

  • read(): Reads a single character.
  • read(char[] cbuf): Reads an array of characters.
  • readLine(): Reads an entire line of text.

To know more about BufferedReader Class, please refer to the article – BufferedReader Class in Java


BufferedReader vs Scanner Class

AspectsBufferedReaderScanner
Primary UseEfficient reading of character streams.Reading formatted input (e.g., integers, strings).
SpeedFaster for large input as it does less parsing.Slower due to parsing overhead (e.g., nextInt(), nextFloat()).
Exception HandlingThrows checked exceptions (e.g., IOException).No checked exceptions; easier to use.
FlexibilityAllows reading larger input efficiently.Best suited for reading simple data types.
Thread SafetySynchronized, making it thread-safe.Not thread-safe by default.
Common UseUsed for reading large input efficiently.Commonly used for smaller, formatted input.


Next Article
Article Tags :
Practice Tags :

Similar Reads

close