×

How to use scanner in Java

Scanner class in Java is the part of java.util package. Java programming language has various ways to read input from the user, Scanner class is one of the classes to take the input. It is considered as the easiest way to read input in Java. Although it is not very efficient, it is feasible to use in the scenarios where time is the constraint.

The Scanner class break the input in tokens using delimiter, and it is whitespace by default. It has various methods to read and parse the primitive inputs.

It is used to parse text for the primitive types and string with the help of regular expression. It can obtain input of the primitive types such as int, float, double, byte, short, etc.

Steps to use the Java Scanner class

1. First, import the Scanner class as,

import java.util.Scanner;

2. After that, create an object of the Scanner class by using the new keyword. Here, we pass the predefined object System.in as its input stream to the constructor of Scanner class. We can also pass the object of File class, when we want to read input from a file.

For example:

Scanner sc_obj = new Scanner (System.in);

We can also pass the string directly in the constructor of Scanner class.

For example:

Scanner sc_obj = new Scanner (“Hello World”);

3. Scanner class has various nextXXX() methods to read different types of data. For example, to read the integer values, there is nextInt() method.

The following table describes different methods to read different types of inputs:

Method name      Description
nextInt()To read an int type of input.
nextFloat()To read a float type of input.
nextDouble()To read a double type of input.
next()To read next input from Scanner which is in use, which is of String type.
nextLine()To read a string input, skipped of the Scanner object.
nextBoolean()To read a boolean type of input.
nextLong()To read a long type of input.
nextShort()To read a short type of input.
nextByte()To read a byte type of input.

4. We can use the next().charAt(0) to read a single character. Here, the next() method returns next token from the string input and charAt(0) method returns the first character of that string.

Example 1:

Let’s consider a basic example where we use Java Scanner class to inputs of different types using the above methods and print it.

TestScanner1.java

//importing Scanner class
import java.util.Scanner;


public class TestScanner1 {
public static void main(String[] args) {
//creating instance of Scanner class
//initializing with predefined input
Scanner sc_obj = new Scanner (System.in);


//reading string input
System.out.println("Enter name:");
String name = sc_obj.nextLine();


//reading integer input
System.out.println("Enter roll no.:");
int roll_no = sc_obj.nextInt();


//reading character input
System.out.println("Enter grade (A-F):");
char grade = sc_obj.next().charAt(0);


//printing the data
System.out.println("Name: " + name);
System.out.println("Roll no.: " + roll_no);
System.out.println("Grade: " + grade);



}
}

Output:

How to use scanner in Java?

Type of input using Scanner

In a Java program, sometimes we need to check the next value that we read is of particular type or the input has ended (EOF marker occurred).

To check if the input is of certain type, Scanner class has different methods as hasNextXXX(). For example to check the integer input, we use the hasNextInt() method. The method returns Boolean values (true / false), true if the Scanner has input of integer type.

The following table describes some of the hasNextXXX() methods for different types:

Method nameDescription
hasNext()Returns true when the scanner object has next token as input.
hasNextInt()To check if next input is of int type.
hasNextFloat()To check if next input is of float type.
hasNextDouble()To check if next input is of double type.
hasNextBoolean()To check if next input is of boolean type.
hasNextByte()To check if next input is of byte type.
hasNextLine()To check if next input has other line in Scanner or not.
hasNextLong()To check if next input is of long type.
hasNextShort()To check if next input is of short type.

Example 2:

Let’s consider following example to understand how to check the input type using different hasNextXXX() methods.

TestScanner2.java

//importing Scanner class
import java.util.Scanner;
  
public class TestScanner2
{
    public static void main(String[] args)
    {
        //initializing a string
        String str = "Hello World!";


        //creating object of Scanner class
        //passing string str to its constructor
        Scanner sc_obj1 = new Scanner(str);


        //using hasNext() to check Scanner contains token or not
        boolean res = sc_obj1.hasNext();
        System.out.println("Does Scanner has token? : " + res);
 
  System.out.println("String is : " + sc_obj1.nextLine());
  sc_obj1.close();
  
 
  //creating a new object of Scanner
  Scanner sc_obj2 = new Scanner(System.in);
 
  System.out.println("Enter a number:");


        // Check if Scanner has an int value using hasNextInt()
        if (sc_obj2.hasNextInt()){
        
            // Read the int value
            int n1 = sc_obj2.nextInt();
            System.out.println("Integer input: " + n1);
  return;
         }
         System.out.println("Not an integer input!!");
         sc_obj2.close();
        
        
    }
}

Output 1:

How to use scanner in Java?

Output 2:

How to use scanner in Java?

Delimiters

Delimiter in Scanner class are used to break the input into tokens. The default delimiter is whitespace.

Following table describes different methods to use the delimiters in Java:

Method nameDescription
delimiter()To get the pattern which Scanner class is using to match the delimiters.
findInLine()To get next occurrence of pattern created by a string, ignoring delimiters.
findWithinHorizon()To find next occurrence of pattern created by a string.
skip()To skip the input that matches with given pattern, ignoring delimiters.
tokens()To get stream of tokens which is separated by delimiters.
useDelimiter()To set the current delimiting pattern of Scanner to the given pattern.

Example 3:

Let’s consider a basic example where we use the methods delimiter() and useDelimiter().

TestDelimiter.java

//importing Scanner class
import java.util.Scanner;
  
public class TestDelimiter {
public static void main(String[] args) {


//declaring and initializing a string
String str = "This is #an example #of #Scanner class";

//creating Scanner object
Scanner sc_obj = new Scanner(str);


//changing the delimiter of Scanner 
//default is whitespace
sc_obj.useDelimiter("#");


//printing the string with delimiter
System.out.println("\nString with # : " + str);


//printing the string separated by delimiter
System.out.println("\nTokenized string:");


while(sc_obj.hasNext()){
System.out.println(sc_obj.next());
}


//displaying the new delimiter using delimiter()
System.out.println("\nNew delimiter is: " + sc_obj.delimiter());
sc_obj.close();
}
}

Output:

How to use scanner in Java?

In this way, we have learned how to use the Scanner class and its different methods in a Java program.


Related Topics

Hashing Algorithm in Java

The hashing algorithm is a method that maps data to the fixed-length hash. The Java hash-based algorithm employs a cryptographic mathematical operation. A hash technique or hash function is supposed...

8 minutes read.

Misc Operators in Java

In this article, we are going to learn about the misc operators in Java. Misc operators are nothing but the miscellaneous operators. The java programming language supports some of the...

4 minutes read.

DatabaseMetaData in Java

The Data about another data is called Meta data. The DatabaseMetaData interface has the meta data of the database present in the system. It consists of database product name, total...

2 minutes read.

How to Iterate List in Java?

List is a Collection foundation interface in Java. It enables us to keep the collection of objects in order. The four classes that make up the List interface implementation are...

3 minutes read.

Methods in Java

The Methods in Java are the collection of statements that are executed when the method is called. By using the methods, the complexity of writing the code decreases. The method consists...

4 minutes read.

Shallow copy in Java

Java's most important task is making a copy or clone of an object. In this part, we'll talk about shallow copies in Java and how to make them of Java...

4 minutes read.

Java String copyValueOf() method

copyValueOf() method returns a String that holds the character sequence of the character array. Syntax: copyValueOf(char[] data) Parameters: data : the character array i.e. String Returns: It returns a String that contains the characters of the...

2 minutes read.

Java Interface Keyword

An interface is also known as the blueprint in Java. It has constants of static values and methods of abstraction. The interface is a mechanism used by Java to declare...

3 minutes read.

Difference between final, finally, and finalize()

Difference between final, finally, and finalize() In Java, final, finally and finalize sound similar they are totally different in functionality. Final and finally are the two keywords but the finalize is...

4 minutes read.

Hierarchy of operators in Java

Operators are the most frequently used terminology in any area of programming, and it helps in various approaches to efficiently solve daily life problems by computer programming. The simple addition of...

4 minutes read.

Java Variable Declaration

In this article, you will be acknowledged about java variable declaration. You will be able to learn and interpret about declaring a variable in Java. Variable in Java Variables are necessary for...

6 minutes read.

How to get the current date and time in Java

Introduction: In this article, we are going to discover many processes for Getting the existing-day Date and Time in Java. Most programs require timestamping events or showing date/times, among many...

3 minutes read.

What is string in Java why it's immutable

String in Java Strings are a series of characters commonly used in Java language, which are considered objects in the Java. To create and manipulate strings, java will provide the String...

4 minutes read.

Java Integer divideUnsigned() method

The divideUnsigned() method of Integer class returns the unsigned quotient by dividing the first argument by the second argument. Syntax public static int divideUnsigned (int dividend , int divisor) Parameters The parameter ‘dividend’ represents...

1 minute read.

How to Set Environment Variables for Java

Introduction Java is an object-oriented programming language that is based on classes and can be employed mostly to develop web and desktop applications. No matter the computer architecture, Java applications are...

7 minutes read.

Java Do While Loop

When we wish to test the exit condition at the end of the loop, we use a do-while loop. The do-while loop always executes its body at least once, because...

1 minute read.

How to Create Immutable Classes in Java

Introduction Java is a programming language that is entirely object-oriented, and everything in it is seen as an object. And the blueprint or template of these objects are classes. Several classes...

3 minutes read.

Process and Thread in Java

Process It is a program that is running on your computer. The process is a heavy-weight, which takes memory separately to other processes. The process may be a small background task like spell-checker; it...

11 minutes read.

Java Map Interface

A map is a collection that maps keys to values, with no duplicate keys allowed. The elements in a map are key/value pairs. HashMap: HashMap stores the keys in a...

3 minutes read.

Generic Linked List in Java

A linear data structure known as a Linked List stores values in nodes. As we already know, each node has two properties: its value and a link to the node...

6 minutes read.