Code:
import java.util.Scanner;
public class Try{
public static void main(String args[]){
Scanner sc = new Scanner(System.in);
System.out.println("Enter a String : ");
String s = sc.nextLine();
System.out.println("The Entered String is : " + s);
System.out.println("The Length of Entered String is : " + s.length());
sc.close();
}
}
Output:
┌─[jaysmito@parrot]─[~/Desktop]
└──╼ $java Try
Enter a String :
hello
The Entered String is : hello
The Length of Entered String is : 5
┌─[jaysmito@parrot]─[~/Desktop]
└──╼ $java Try
Enter a String :
hello^[[C
The Entered String is : hello
The Length of Entered String is : 8
When I press the arrow keys ^[[C show up instead of the cursor moving (similar thing happens with other arrow keys, escape key, home, end)!
Whats happening here is the second time the string has the characters :
['h', 'e', 'l', 'l', 'o', '\x1b', '[', 'C']
So, the '\x1b', '[', 'C' is the sequence of characters send to the shell from the keyboard for representing right arrow key(cursor forward).
What i want is that these characters will not show up in the shell but the cursor will move (forward, backward, to home, end, etc as per the key pressed).
Processing after taking the input is meaning less as the main aim is to let the cursor be moved!
How can i achieve this in Java?
[EDIT]
The one and only aim is to give the user a exact terminal like experience while using the program.