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.javapublic static void main(String[] args){
String name=args[0];
System.out.println(“hello ” + name);
}
}
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....