Read and Write User Input in Java – 在Java中读和写用户输入

最后修改: 2018年 7月 4日

1. Introduction


In this quick tutorial, we’ll demonstrate several ways to use a console for user input and output in Java.


We’ll have a look at a few methods of the Scanner class for handling input, and then we’ll show some simple output using System.out.


Finally, we’ll see how to use the Console class, available since Java 6, for both console input and output.

最后,我们将看到如何使用Console类,该类从Java 6开始可用,用于控制台输入和输出。

2. Reading from


For our first examples, we’ll use the Scanner class in the java.util package to obtain the input from — the “standard” input stream:

在我们的第一个例子中,我们将使用java.util包中的Scanner类,从–“标准 “输入流中获取输入。

Scanner scanner = new Scanner(;

Let’s use the nextLine() method to read an entire line of input as a String and advance to the next line:


String nameSurname = scanner.nextLine();

We can also use the next() method to get the next input token from the stream:

我们还可以使用next() 方法从流中获得下一个输入标记

String gender =;

If we’re expecting numeric inputs, we can use nextInt() to get the next input as an int primitive, and, similarly, we can use nextDouble() to get a variable of type double:


int age = scanner.nextInt();
double height = scanner.nextDouble();

The Scanner class also offers hasNext_Prefix() methods which return true if the next token can be interpreted as a corresponding data type.

Scanner 类还提供了hasNext_Prefix() 方法,如果下一个标记可以被解释为相应的数据类型,则返回true

For example, we can use hasNextInt() method to check if the next token can be interpreted as an integer:


while (scanner.hasNextInt()) {
    int nmbr = scanner.nextInt();

Also, we can use the hasNext(Pattern pattern) method to check if the following input token matches a pattern:

另外,我们可以使用 hasNext(Pattern pattern) 方法来检查下面的输入标记是否与模式相匹配

if (scanner.hasNext(Pattern.compile(""))) {         

Besides using the Scanner class, we can also use an InputStreamReader with to get the input from the console:


BufferedReader buffReader = new BufferedReader(new InputStreamReader(;

And then we can read input and parse it to an integer:


int i = Integer.parseInt(buffReader.readLine());

3. Writing to System.out


For console output, we can use System.out — an instance of the PrintStream class, which is a type of OutputStream.


In our example, we’ll use console output to provide a prompt for user input and display a final message to a user.


Let’s use the println() method to print a String and terminate the line:


System.out.println("Please enter your name and surname: ");

Alternately, we can use the print() method, which works similarly to println(), but without terminating the line:


System.out.print("Have a good");
System.out.print(" one!");

4. Using the Console Class for Input and Output


In JDK 6 and later, we can use the Console class from package to read from and write to the console.

在JDK 6及以后的版本中,我们可以使用来自 包的Console 类来从控制台读取和写入。

To obtain a Console object, we’ll call System.console():


Console console = System.console();

Next, let’s use the readLine() method of the Console class to write a line to the console and then read a line from the console:


String progLanguauge = console.readLine("Enter your favourite programming language: ");

If we need to read sensitive information, such as a password, we can use the readPassword() method to prompt a user for a password and read the password from the console with echoing disabled:


char[] pass = console.readPassword("To finish, enter password: ");

We can also use the Console class to write output to the console, for example, using the printf() method with a String argument:


console.printf(progLanguauge + " is very interesting!");

5. Conclusion


In this article, we showed how to use several Java classes to perform console user input and output.


As always, the code samples from this tutorial are provided over on GitHub.