DEV Community

Edwin Torres
Edwin Torres

Posted on

4 2

Tutorial: Accepting String Input in Java

Some Java programs need input from the user. To accept input from the user, use the Scanner class. The Scanner class has methods that accept different types of input. This tutorial describes string input.

First, import the Scanner class at the top of your program:

import java.util.Scanner;  //NEW

public class Example {
  public static void main(String[] args) {







  } 
}
Enter fullscreen mode Exit fullscreen mode

Next, create a Scanner object:

import java.util.Scanner;

public class Example {
  public static void main(String[] args) {

    Scanner input = new Scanner(System.in);  //NEW





  } 
}
Enter fullscreen mode Exit fullscreen mode

This Scanner object accepts input from System.in, or the console. The variable name input refers to the Scanner object.

Now prompt the user to enter a string:

import java.util.Scanner;

public class Example {
  public static void main(String[] args) {

    Scanner input = new Scanner(System.in);
    System.out.print("What's your name? ");  //NEW




  } 
}
Enter fullscreen mode Exit fullscreen mode

Since System.out.print() does not output a newline character, the user will input the string on the same line as the question.

Next, use the Scanner input variable to accept one string from the console:

import java.util.Scanner;

public class Example {
  public static void main(String[] args) {

    Scanner input = new Scanner(System.in);
    System.out.print("What's your name? ");

    String s = input.next();  //NEW


  } 
}
Enter fullscreen mode Exit fullscreen mode

The next() method accepts the next string from the console. If the user enters multiple string values, separated by whitespace, the next() method captures the first string value only.

Finally, output the string value that the user entered:

import java.util.Scanner;

public class Example {
  public static void main(String[] args) {

    Scanner input = new Scanner(System.in);
    System.out.print("What's your name? ");

    String s = input.next();
    System.out.println("Hello " + s); //NEW

  } 
}
Enter fullscreen mode Exit fullscreen mode

That is the entire program. Here is a sample run of the program:

What's your name? Edwin
Hello Edwin
Enter fullscreen mode Exit fullscreen mode

To accept multiple string values as input, execute the next() statement multiple times:

import java.util.Scanner;

public class Example {
  public static void main(String[] args) {

    Scanner input = new Scanner(System.in);
    System.out.print("What are your first and last names? ");

    String first = input.next();
    String last = input.next();
    System.out.println("Hello " + first + " " + last);

  } 
}
Enter fullscreen mode Exit fullscreen mode

The first next() statement accepts the first input string. The second next() statement accepts the second input string.

Here is a sample run of the program:

What are your first and last names? Edwin Torres
Hello Edwin Torres
Enter fullscreen mode Exit fullscreen mode

Finally, to accept the entire line of input as a string, use the nextLine() method:

import java.util.Scanner;

public class Example {
  public static void main(String[] args) {

    Scanner input = new Scanner(System.in);
    System.out.print("What are the colors of the rainbow? ");

    String colors = input.nextLine();
    System.out.println("The colors are: " + colors);

  } 
}
Enter fullscreen mode Exit fullscreen mode

Here is a sample run of the program:

What are the colors of the rainbow? red orange yellow green blue indigo violet
The colors are: red orange yellow green blue indigo violet
Enter fullscreen mode Exit fullscreen mode

That's it! The Scanner class is useful for accepting input from the user. This tutorial discusses string input and the different ways to accept string values from the user.

Thanks for reading. 😃

Follow me on Twitter @realEdwinTorres for more programming tips and help.

Top comments (0)

Great read:

Is it Time to go Back to the Monolith?

History repeats itself. Everything old is new again and I’ve been around long enough to see ideas discarded, rediscovered and return triumphantly to overtake the fad. In recent years SQL has made a tremendous comeback from the dead. We love relational databases all over again. I think the Monolith will have its space odyssey moment again. Microservices and serverless are trends pushed by the cloud vendors, designed to sell us more cloud computing resources.

Microservices make very little sense financially for most use cases. Yes, they can ramp down. But when they scale up, they pay the costs in dividends. The increased observability costs alone line the pockets of the “big cloud” vendors.