How to take String Input in Java
There are various ways to take String input in Java. In this section, we are going to discuss how to take String input in Java. There are following ways to take String input in Java:
- By Using Java Scanner class
- By Using Java BufferedReader class
- By Using the Command Line argument
By Using Java Scanner class
The Scanner class is defined in java.util package that is used to take input from the user. The Scanner class provides the following two methods to take input from the user.
- Scanner.nextLine() Method
- Scanner.next() Method
Let’s discuss each of the mentioned methods to take input from the user.
1. Scanner.nextLine() Method
The nextLine() method reads the input till the line gets terminated and shifts the cursor to the next line. The syntax of the nextLine() method is:
Syntax:
public String nextLine()
The method does not accept any parameter. It returns the string that was skipped. If the method finds no line to read, the method throws the NoSuchElementException.
FileName: StringInputExample.java
// importing the Scanner class import java.util.Scanner; public class StringInputExample { // main method public static void main(String argvs[]) { // To hold the string input by the user String str; // creating an object of the Scanner class Scanner scnr = new Scanner(System.in); System.out.print("Enter a string: "); // invoking the method nextLine() // to take input from the user str = scnr.nextLine(); // for new line System.out.println(); // displaying the entered string System.out.print("The string entered by the user is: " + str ); } }
Output:

Explanation: After displaying the message Enter a string, the cursor waits on the console for the user to enter string. The method nextLine() reads till the user hits enter and return the read stuff, which is captured by the variable str. The same read string is shown in the output. Note that hitting the enter button shows that the line has been terminated.
Scanner.next() Method
The next() method reads the input till the line gets terminated or white space is encountered. The main difference between the nextLine() and next() method is that the latter one terminates when white space is encountered, where the former one terminates only when enter is pressed. The syntax of the next() method is:
Syntax:
public String next()
Returns:
The read line is returned.
The method does not accept any parameter. It returns the string that was skipped. If the method finds no line to read, the method throws the NoSuchElementException.
FileName: StringInputExample1.java
// importing the Scanner class import java.util.Scanner; public class StringInputExample1 { // main method public static void main(String argvs[]) { // To hold the string input by the user String str; // Instantiating the Scanner class by creating its object Scanner scnnr = new Scanner(System.in); System.out.print("Enter a string: "); // invoking the method next() // to take input from the user str = scnnr.next(); // for new line System.out.println(); // displaying the entered string System.out.print("The string entered by the user is: " + str ); } }
Output:

Explanation: The user enters My Name is Khan. However, after the word “My” white space is encountered. Hence, the rest three words are not read, and the same can be confirmed by observing the output.
By using Java BufferedReader Class
Java BufferedReader Class is used to read the stream of characters. The class accepts an object of the InputStreamReader class. So, it is necessary to create a constructor of the InputStreamReader class and pass its object to the BufferedReader class as a parameter. The BufferedReader class has the readLine() method to take input from a user. The readLine() method reads one line at a time.
Syntax:
public String readLine()
It returns the line entered by the user. It does not include any line-termination characters, or null if the end of the stream has been reached.
Let’s observe the following program to understand how the BufferedReader class is used for taking input from the user.
FileName: StringInputExample2.java
// Import statements import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class StringInputExample2 { // main method public static void main(String argvs[]) throws IOException { String str; // Creating an object of the InputStreamReader class InputStreamReader inputStrObj = new InputStreamReader(System.in); // Creating an object of the BufferedReader class BufferedReader bufrObj = new BufferedReader(inputStrObj); System.out.print("Enter a string: "); // invoking the method readLine() // to take input from the user str = bufrObj.readLine(); // for new line System.out.println(); // displaying the entered string System.out.print("The string entered by the user is: " + str ); } }
Output:

Explanation: In the constructor of the InputStreamReader class, System.in is passed. It is done because the input is being taken from the keyboard. With the help of InputStreamReader class, the BufferedReader class stores the input given by the user through keyboard.
By using the Command Line Argument
Command Line argument is present in the main method (String argvs[]). String argvs[] is a string array that accepts a line as an input. Let’s understand the usage of command-line argument with the help of the following Java program.
FileName: StringInputExample3.java
public class StringInputExample3 { // main method public static void main(String argvs[]) { // To store the elements of the String array argvs String str = ""; // Calculating the size of the String array int size = argvs.length; // loop for iterating over the elements of the String array argvs for(int i = 0; i < size; i++) { // Converting the String array into a string str = str + argvs[i] + " "; } // displaying the entered string System.out.print("The string entered by the user is: " + str ); } }
Output:

Explanation: The command line argument is put when the program is executed using the java command. The number of elements in the String array argvs[] is decided by the white spaces present in the input string. In the input string (“My name is Khan”), there are three white spaces present. Hence, there are four string elements present in the array argvs (“My”, “name”, “is”, “Khan”). The array argvs is then parsed using the for-loop, and elements of the array argvs are then concatenated to build the string again, as we have shown in the above output.