📜  Java从控制台读取输入的方法

📅  最后修改于: 2020-03-25 01:07:39             🧑  作者: Mango

在Java中,有三种不同的方式可以在命令行环境(控制台)中从用户读取输入。

1.使用缓冲读取器类

这是Java的经典输入方法,在JDK1.0中引入。通过将System.in(标准输入流)包装在InputStreamReader(包装在BufferedReader中)中来使用此方法,我们可以在命令行中从用户读取输入。
优点

  • 输入经过缓冲以有效读取。

缺点:

  • 包装代码很难记住。

程序:

// Java展示如何使用BufferedReader
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Test
{
    public static void main(String[] args) throws IOException
    {
        //使用BufferReader输入
        BufferedReader reader =
                   new BufferedReader(new InputStreamReader(System.in));
        // 使用readLine读取数据
        String name = reader.readLine();
        // 打印读取的行
        System.out.println(name);
    }
}

输入:

芒果

输出:

芒果

注意:要读取其他类型,我们使用Integer.parseInt()、Double.parseDouble()之类的函数。要读取多个值,我们使用split()。

2.使用Scanner类

这可能是最优选的输入方法。Scanner类的主要目的是使用正则表达式解析原始类型和字符串,但是它也可以用于在命令行中从用户读取输入。
优点:

  • 从标记化的输入中解析基元数据类型(nextInt(),nextFloat()等)的便捷方法。
  • 正则表达式可用于查找标记。

缺点:

  • 读取方法不同步

要看到更多的差异,请参阅文章。

// Java展示使用Scanner
import java.util.Scanner;
class GetInputFromUser
{
    public static void main(String args[])
    {
        // 使用Scanner读取输入
        Scanner in = new Scanner(System.in);
        String s = in.nextLine();
        System.out.println("您输入了 string "+s);
        int a = in.nextInt();
        System.out.println("您输入了 integer "+a);
        float b = in.nextFloat();
        System.out.println("您输入了 float "+b);
    }
}

输入:

芒果文档
12
3.4

输出:

您输入了 string 芒果文档
您输入了 integer 12
您输入了 float 3.4

3.使用System.console控制台类

它已成为从命令行读取用户输入的首选方法。此外,它可用于读取类似密码的输入,而无需回显用户输入的字符;也可以使用格式字符串语法(例如System.out.printf())。
优点:

  • 读取密码而不显示输入的字符。
  • 读取方法是同步的。
  • 可以使用格式字符串语法。

缺点:

  • 在非交互式环境(例如在IDE中)中不起作用。
    // Java展示如何使用System.console()
    
    public class Sample
    {
        public static void main(String[] args)
        {
            // 使用Console接受输入
            String name = System.console().readLine();
            System.out.println(name);
        }
    }

请参考此内容以更快速地阅读输入。