📜  如何在Java中获取用户的输入?

📅  最后修改于: 2022-05-13 01:55:32.190000             🧑  作者: Mango

如何在Java中获取用户的输入?

Java为其 I/O 包带来了各种流,帮助用户执行所有输入-输出操作。这些流支持所有类型的对象、数据类型、字符、文件等,以完全执行 I/O 操作。我们可以通过两种方式从用户或文件中获取输入

  • BufferedReader 类
  • 扫描仪类

1. 缓冲阅读器

它是一个简单的类,用于读取字符序列。它有一个简单的函数来读取另一个读取的字符,一个字符数组,以及一个读取一行的 readLine()函数。

InputStreamReader() 是一个函数,它将输入的字节流转换为字符流,以便可以像 BufferedReader 期望的那样读取它 字符流。

BufferedReader 可以抛出已检查的异常

Java
// Java Program For BufferedReader Class
import.java.io.*;
 
public class BufferedReader
   
{
   
  // Main Method
  public static void main(String [] args)
  {
    // Creating BufferedReader Object
    // InputStreamReader converts bytes to
    // stream of character
    BufferedReader BufferedReader_Name = new
      BufferedReader(new InputStreamReader(System.in));
                      
      // Asking for input from user
      System.out.println("Enter String : ");
      System.out.println("Enter Integer : ");
                      
      // String reading internally
      String String_name = BufferedReader_Name.readLine();
                 
      // Integer reading internally
      int Integer_value =
      Integer.parseInt(BufferedReader_name.readLine());
                      
      // Printing String
      System.out.println("Entered String : "+ String_name);
                      
      //Printing Integer              
      System.out.println("Entered Integer : "+ Integer_value); 
       
    }
                      
  }


Java
// Java Program to show how to take
// input from user using Scanner Class
 
import java.util.Scanner;
 
class Scanner {
   
  public static void main( String[] args )
  {
     
    // Scanner definition
    Scanner Scanner_name= new Scanner(System.in);
     
    // input is a string read
    // by readLine() function
    String str= str.readLine();
     
    // print string
    System.out.ptintln("Entered String : "+ str);
     
    // input is an Integer
    // read by nextInt() function
    int x= Scanner_name.nextInt();
     
    // print integer
    System.out.ptintln("Entered Integer : "+ x);
     
    // input is a floatingValue
    // read by nextFloat() function
    float f = Scanner_name.nextFloat();
     
    // print floating value
    System.out.ptintln("Entered FloatValue : "+ f);
  }
}


输出 :

2. 扫描仪

它是 BufferedReader 的高级版本,是在Java的更高版本中添加的。扫描仪可以读取格式化的输入。它对不同类型的数据类型具有不同的功能。

  • 扫描器更容易阅读,因为我们不必编写抛出,因为它没有抛出异常。
  • 它是在Java的更高版本中添加的
  • 它包含用于读取 Integer、 字符和其他数据类型的预定义函数。

扫描仪的语法

Scanner Scanner_name = new Scanner(System.in);

导入扫描器类的语法:要使用扫描器,我们需要导入扫描器类

import java.util.Scanner ;  

内置扫描仪功能如下

  • 整数:nextInt()
  • 浮点数:nextFloat()
  • 字符串:readLine()

因此,在 Scanner 中的 Integer 和 String 的情况下,我们不需要像 BufferedReader 中那样进行解析。

Java

// Java Program to show how to take
// input from user using Scanner Class
 
import java.util.Scanner;
 
class Scanner {
   
  public static void main( String[] args )
  {
     
    // Scanner definition
    Scanner Scanner_name= new Scanner(System.in);
     
    // input is a string read
    // by readLine() function
    String str= str.readLine();
     
    // print string
    System.out.ptintln("Entered String : "+ str);
     
    // input is an Integer
    // read by nextInt() function
    int x= Scanner_name.nextInt();
     
    // print integer
    System.out.ptintln("Entered Integer : "+ x);
     
    // input is a floatingValue
    // read by nextFloat() function
    float f = Scanner_name.nextFloat();
     
    // print floating value
    System.out.ptintln("Entered FloatValue : "+ f);
  }
}


输出 :

在 Java 中获取用户输入

BufferedReader 和 Scanner 的区别

  • BufferedReader 是一种非常基本的读取输入的方法,通常用于读取字符流。它比 Scanner 有优势,因为它比 Scanner 更快,因为 Scanner 为解析输入做了大量的后处理;如 nextInt(), nextFloat() 所示
  • BufferedReader 更灵活,因为我们可以指定要读取的流输入的大小。 (一般来说,BufferedReader 比 Scanner 读取更大的输入)
  • 当我们读取更大的输入时,这两个因素会起作用。一般来说,扫描器类服务于输入。
  • BufferedReader 是首选,因为它是同步的。在处理多个线程时,它是首选。
  • 对于体面的输入,易于阅读。 Scanner 优于 BufferedReader。