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
