Java Console 类用于从控制台获取输入。
它提供了读取文本和密码的方法。
如果我们使用 Console 类读取密码,则不会向用户显示。
java.io.Console 类在内部与系统控制台相连。
Java如何从控制台读取用户输入
Using BufferedReader: System.out.println("Please type your name and press Enter."); BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); try { String name = reader.readLine(); System.out.println("Hello, " + name + "!"); } catch(IOException e) { System.out.println("An error occurred: " + e.getMessage()); }
此代码需要以下导入:
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader;
使用Scanner:
版本 ≥ Java SE 5
System.out.println("Please type your name and press Enter"); Scanner scanner = new Scanner(System.in); String name = scanner.nextLine(); System.out.println("Hello, " + name + "!");
此示例需要以下导入:
import java.util.Scanner;
要读取多行,请重复调用Scanner.nextLine():
System.out.println("Please enter your first and your last name, on separate lines."); Scanner scanner = new Scanner(System.in); String firstName = scanner.nextLine(); String lastName = scanner.nextLine(); System.out.println("Hello, " + firstName + " " + lastName + "!");
有两种获取字符串的方法,next() 和 nextLine()。
next() 返回第一个空格之前的文本(也称为“标记”),nextLine() 返回用户输入的所有文本,直到按下 Enter。
Scanner 还提供了用于读取 String 以外的数据类型的实用方法。
这些包括:
scanner.nextByte(); scanner.nextShort(); scanner.nextInt(); scanner.nextLong(); scanner.nextFloat(); scanner.nextDouble(); scanner.nextBoirnteger(); scanner.nextBigDecimal();
如果流具有更多请求类型,则将这些方法中的任何一个加上 has(如在 hasNextLine()、hasNextInt() 中)返回 true。
注意:如果输入不是请求的类型(对于
例如,为 nextInt() 键入“a”)。
我们可以使用 try {} catch() {} 来防止这种情况
Scanner scanner = new Scanner(System.in); //Create the scanner scanner.useLocale(Locale.US); //Set number format excepted System.out.println("Please input a float, decimal separator is ."); if (scanner.hasNextFloat()){ //Check if it is a float float fValue = scanner.nextFloat(); //retrive the value directly as float System.out.println(fValue + " is a float"); }else{ String sValue = scanner.next(); //We can not retrive as float System.out.println(sValue + " is not a float"); }
使用 System.console:
版本 ≥ Java SE 6
String name = System.console().readLine("Please type your name and press Enter%n"); System.out.printf("Hello, %s!", name); //To read passwords (without echoing as in unix terminal) char[] password = System.console().readPassword();
优点:
- 读取方法是同步的
- 可以使用格式字符串语法
日期:2020-06-02 22:15:16 来源:oir作者:oir