在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
如我们所见,密码回显已禁用。

