Java使用3种方法从控制台读取输入

2021年4月4日19:38:34 发表评论 1,261 次浏览

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

1.使用缓冲读取器类

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

输入被缓冲,以便有效读取。

包装代码很难记住。

程序:

// Java program to demonstrate BufferedReader
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Test 
{
     public static void main(String[] args) throws IOException 
     {
         //Enter data using BufferReader
         BufferedReader reader = 
                    new BufferedReader( new InputStreamReader(System.in));
         
         // Reading data using readLine
         String name = reader.readLine();
  
         // Printing the read line
         System.out.println(name);        
     }
}

输入如下:

Geek

输出如下:

Geek

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

2.使用Scanner类

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

优点:

从标记化的输入中解析基元(nextInt(), nextFloat()等)的便捷方法。

正则表达式可用于查找标记。

缺点:

读取方法不同步

要查看更多差异, 请参阅这个文章。

// Java program to demonstrate working of Scanner in Java
import java.util.Scanner;
  
class GetInputFromUser
{
     public static void main(String args[])
     {
         // Using Scanner for Getting Input from User
         Scanner in = new Scanner(System.in);
  
         String s = in.nextLine();
         System.out.println( "You entered string " +s);
  
         int a = in.nextInt();
         System.out.println( "You entered integer " +a);
  
         float b = in.nextFloat();
         System.out.println( "You entered float " +b);
     }
}

输入如下:

lsbin
12
3.4

输出如下:

You entered string lsbin
You entered integer 12
You entered float 3.4

3.使用控制台类

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

优点:

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

缺点:

在非交互式环境(例如在IDE中)中不起作用。

// Java program to demonstrate working of System.console()
// Note that this program does not work on IDEs as 
// System.console() may require console
public class Sample 
{
     public static void main(String[] args) 
     {        
         // Using Console to input data from user
         String name = System.console().readLine();
          
         System.out.println(name);
     }
}

请参考这个以更快的速度读取输入。

如果发现任何不正确的地方, 或者想分享有关上述主题的更多信息, 请写评论。

木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: