Wednesday, 25 April 2018

Core Java: How to get input from user

How to get input from user in java

1. Using BufferedReader class
By wrapping the System.in (standard input stream) in an InputStreamReader which is wrapped in a BufferedReader, we can read input from the user in the command line. Here’s an example:
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
System.out.print("Enter your name: ");
String name = reader.readLine();
System.out.println("Your name is: " + name);
In the above example, the readLine() method reads a line of text from the command line.
Advantages: The input is buffered for efficient reading.
Drawbacks: The wrapping code is hard to remember.

2. Using Scanner class
The main purpose of the Scanner class (available since Java 1.5) is to parse primitive types and strings using regular expressions, however it is also can be used to read input from the user in the command line.
import java.util.Scanner;

 Here’s an example:
Scanner scanner = new Scanner(System.in);
System.out.print("Enter your nationality: ");
String nationality = scanner.nextLine();
System.out.print("Enter your age: ");
int age = scanner.nextInt();

The Scanner class has several methods which are used to take different types of inputs. They are listed in the table below.
Method
Description
nextByte()
Accept a byte
nextShort()
Accept a short
nextInt()
Accept an int
nextLong()
Accept a long
next()
Accept a single word
nextLine()
Accept a line of String
nextBoolean()
Accept a boolean
nextFloat()
Accept a float
nextDouble()
Accept a double

Advantages:
  • Convenient methods for parsing primitives (nextInt(), nextFloat(), …) from the tokenized input.
  • Regular expressions can be used to find tokens.
Drawbacks:
  • The reading methods are not synchronized.

3-Using Console class
The Console class was introduced in Java 1.6, and it has been becoming a preferred way for reading user’s input from the command line. In addition, it can be used for reading password-like input without echoing the characters entered by the user; the format string syntax can also be used (like System.out.printf()). Here’s an example code snippet:
Console console = System.console();
if (console == null) {
    System.out.println("No console: non-interactive mode!");
    System.exit(0);
}
System.out.print("Enter your username: ");
String username = console.readLine();
System.out.print("Enter your password: ");
char[] password = console.readPassword();
 String passport = console.readLine("Enter your %d (th) passport number: ", 2);
Advantages:
  • Reading password without echoing the entered characters.
  • Reading methods are synchronized.
  • Format string syntax can be used.
Drawbacks:
  • Does not work in non-interactive environment (such as in an IDE).

4. Using command line argument
public class Input{
public static void main(String[] args){
String name=args[0];
System.out.println(“hello ” + name);
}
}
javac Input.java
java Input abc
ouput: hello abc


Combined Example Program
For your convenient and reference purpose, we combine the above code snippet into a demo program whose source code looks like this:

import java.io.*;
import java.util.*;
 public class UserInputConsoleDemo {

    public static void main(String[] args) {

        // using InputStreamReader
        try {
            BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));          
            System.out.print("Enter your name: ");

            String name = reader.readLine();
            System.out.println("Your name is: " + name);
        } catch (IOException ioe) {
            ioe.printStackTrace();
        }

        // using Scanner
        Scanner scanner = new Scanner(System.in);
        System.out.print("Enter your nationality: ");
        String nationality = scanner.nextLine();
        System.out.println("Your nationality is: " + nationality);

        // using Console
        Console console = System.console();
        if (console == null) {
            System.out.println("No console: not in interactive mode!");
            System.exit(0);
        }

        System.out.print("Enter your username: ");
        String username = console.readLine();
         
        System.out.print("Enter your password: ");
        char[] password = console.readPassword();

        System.out.println("Thank you!");
        System.out.println("Your username is: " + username);
        System.out.println("Your password is: " + String.valueOf(password));

        // using Console with formatted prompt
        String job = console.readLine("Enter your job: ");
         
        String passport = console.readLine("Enter your %d (th) passport number: ", 2);

        System.out.println("Your job is: " + job);
        System.out.println("Your passport number is: " + passport);
    }  
}

No comments:

Post a Comment

Please write your view and suggestion....