在Java中如何从控制台读取输入
时间:2020-01-09 10:35:30 来源:igfitidea点击:
如果必须从Java控制台读取输入,则有3个选项。
- 使用BufferedReader类。参见示例。
- 使用Java 5中提供的Scanner类。请参见示例。
- 使用Java 6中提供的System.console()方法。请参见示例。
使用BufferedReader类
通过将标准输入流" System.in"包装在InputStreamReader中,并进一步包装在BufferedReader中,我们可以使用Java从控制台读取输入。
public class ConsoleReader { public static void main(String[] args) { // Wrapping InputStreamReader and System.in BufferedReader bufferRead = new BufferedReader(new InputStreamReader(System.in)); System.out.print("Enter City Name: "); try { String cityName = bufferRead.readLine(); System.out.println("Entered city name- " + cityName); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
输出:
Enter City Name: Delhi Entered city name- Delhi
使用扫描仪类
从Java中的控制台读取输入的另一种方法是使用Scanner类。扫描程序使用定界符模式将其输入分为令牌,默认情况下,该模式与空格匹配。然后可以将所得令牌转换为值。对于扫描输入,有用于不同数据类型的便捷方法,例如nextInt(),nextDouble(),nextFloat()等。
public class ConsoleReader { public static void main(String[] args) { System.out.print("Enter Values: "); Scanner sc = new Scanner(System.in); System.out.println("Entered Line- " + sc.nextLine()); System.out.println("Entered integer value- " + sc.nextInt()); System.out.println("Entered double value- " + sc.nextInt()); sc.close(); } }
输出:
Enter Values: Delhi Entered Line- Delhi 56 67.89 Entered integer value- 56 Entered double value- 67.89
使用System.console方法
我们还可以使用System.console从Java中的控制台读取输入。使用System.console()方法的优点之一是,它返回一个Console对象,该对象具有readPassword()方法,该方法可用于在禁用回显的情况下从控制台读取密码或者密码。
public class ConsoleReader { public static void main(String[] args) { //Using System.console() String username = System.console().readLine("Enter City Name: "); System.out.println("Entered city name- " + username); } }
输出:
Enter City Name: Delhi Entered city name- Delhi
使用System.console方法读取密码
public class ConsoleReader { public static void main(String[] args) { //Using System.console() System.out.print("Enter password: "); char[] username = System.console().readPassword(); System.out.println("Entered password- " + username.toString()); } }
输出:
Enter password: Entered password- [Hyman@theitroad
如我们所见,密码回显已禁用。