There are 2 methods to take input from the user which are separated by space which are as follows:
- Using BufferedReader Class and then splitting and parsing each value
- Using nextInt( ) method of Scanner class
Let us discuss both the methods one by one in order to get a better understanding by implementing the same clean java programs.
Method 1:
Using BufferedReader Class and then splitting and parsing each value.
Procedure:
- Using readline() method of BufferedReader and Scan the whole string.
- Split this String for str.split(” “)
- Iterate over the above array and parse each integer value using Integer.parseInt( ).
Example
// Java Program to Take Input from User Separated by Space // Using BufferedReader class // Importing required classes import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
// Main class // BufferedReaderTest class GFG {
// Main driver method
public static void main(String[] args)
throws IOException
{
// Creating an object of BufferedReader class
BufferedReader bi = new BufferedReader(
new InputStreamReader(System.in));
// Custom integer array of size 10
int num[] = new int [ 10 ];
// Array of string type to store input
String[] strNums;
// Display message
System.out.println( "enter string of numbers" );
// Reading input a string
strNums = bi.readLine().split( " " );
for ( int i = 0 ; i < strNums.length; i++) {
num[i] = Integer.parseInt(strNums[i]);
}
// Display message
System.out.println( "printing stored numbers " );
// Printing the stored numbers using for loop
for ( int i = 0 ; i < strNums.length; i++) {
System.out.println(num[i]);
}
}
} |
Output:
Method 2: Using nextInt() method of Scanner class.
Procedure:
- Using the nextInt() method of Scanner class and scan to scan the input.
- Using for loop to store input in an array.
- Iterate through the above array and parse each integer using sc.nextInt()
Example
// Java Program to Take Input from User Separated by Space // Using Scanner class // Importing required classes import java.io.IOException;
import java.util.Scanner;
// Main class // Scanner class class GFG {
// Main driver method
public static void main(String[] args)
throws IOException
{
// Display message for better readability
System.out.println( "enter input " );
// Creating an object of Scanner class
Scanner sc = new Scanner(System.in);
// Declaring and initializing an array of size 10
int [] nums = new int [ 10 ];
int i;
// Loop to store input values in nums array
for (i = 0 ; i < nums.length; i++) {
nums[i] = sc.nextInt();
}
// Display message
System.out.println( "printing stored values" );
// Printing stored values
for (i = 0 ; i < nums.length; i++) {
System.out.println(nums[i] + " " );
}
}
} |
Output:
Note: The first method using Bufferedreader class and then splitting and parsing each value is much faster than using nixing() method of Scanner class. It is nearly 2 times faster than the second one. Below we do provide in order how to calculate the time consume by both methods by using nanotime method
// Initializing variables long startTime, endTime; // Start time startTime = System.nanoTime(); { // Insert code here // Method 1 or method 2 code } // End time endTime = System.nanoTime();