In Java, Scanner is a class in java.util package used for obtaining the input of the primitive types like int, double, etc. and strings. Using the Scanner class in Java is the easiest way to read input in a Java program, though not very efficient if you want an input method for scenarios where time is a constraint like in competitive programming.
Java Scanner Input Types
Scanner class helps to take the standard input stream in Java. So, we need some methods to extract data from the stream. Methods used for extracting data are mentioned below:
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 |
Let us look at the code snippet to read data of various data types.
Example
Java
import java.util.Scanner;
public class ScannerDemo1 {
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
String name = sc.nextLine();
char gender = sc.next().charAt( 0 );
int age = sc.nextInt();
long mobileNo = sc.nextLong();
double cgpa = sc.nextDouble();
System.out.println( "Name: " + name);
System.out.println( "Gender: " + gender);
System.out.println( "Age: " + age);
System.out.println( "Mobile Number: " + mobileNo);
System.out.println( "CGPA: " + cgpa);
}
}
|
Input
Geek
F
40
9876543210
9.9
Output
Name: Geek
Gender: F
Age: 40
Mobile Number: 9876543210
CGPA: 9.9
Sometimes, we have to check if the next value we read is of a certain type or if the input has ended (EOF marker encountered).
Then, we check if the scanner’s input is of the type we want with the help of hasNextXYZ() functions where XYZ is the type we are interested in. The function returns true if the scanner has a token of that type, otherwise false. For example, in the below code, we have used hasNextInt(). To check for a string, we use hasNextLine(). Similarly, to check for a single character, we use hasNext().charAt(0).
Let us look at the code snippet to read some numbers from the console and print their mean.
Java
import java.util.Scanner;
public class ScannerDemo2 {
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
int sum = 0 , count = 0 ;
while (sc.hasNextInt()) {
int num = sc.nextInt();
sum += num;
count++;
}
if (count > 0 ) {
int mean = sum / count;
System.out.println( "Mean: " + mean);
}
else {
System.out.println(
"No integers were input. Mean cannot be calculated." );
}
}
}
|
Input
1 2 3 4 5
Output
Mean: 3
Important Points About Java Scanner Class
- To create an object of Scanner class, we usually pass the predefined object System.in, which represents the standard input stream. We may pass an object of class File if we want to read input from a file.
- To read numerical values of a certain data type XYZ, the function to use is nextXYZ(). For example, to read a value of type short, we can use nextShort()
- To read strings, we use nextLine().
- To read a single character, we use next().charAt(0). next() function returns the next token/word in the input as a string and charAt(0) function returns the first character in that string.
- The Scanner class reads an entire line and divides the line into tokens. Tokens are small elements that have some meaning to the Java compiler. For example, Suppose there is an input string: How are you
In this case, the scanner object will read the entire line and divides the string into tokens: “How”, “are” and “you”. The object then iterates over each token and reads each token using its different methods.
If you like GeeksforGeeks and would like to contribute, you can also write an article and mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks. Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above
Whether you're preparing for your first job interview or aiming to upskill in this ever-evolving tech landscape,
GeeksforGeeks Courses are your key to success. We provide top-quality content at affordable prices, all geared towards accelerating your growth in a time-bound manner. Join the millions we've already empowered, and we're here to do the same for you. Don't miss out -
check it out now!