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