Escrito en el contenido anterior, la entrada de la consola Java es solo un poco "" "
Directorio de artículos
Comparación de tres métodos de un vistazo
A continuación se registran tres métodos para implementar las operaciones de entrada de la consola de Java, primero observe la lista de ventajas y desventajas (paso a paso ↓↓↓)
Número de serie | método | ventaja | Desventaja |
---|---|---|---|
1 | System.in / System.out | —— | 1. Puede obtener los caracteres escritos, pero solo para un carácter |
2. Solo se obtiene el tipo char (int, float, etc. son más problemáticos) | |||
2 | Reemplazar el flujo del sistema | 1. Puede obtener la cadena escrita | 2. Para obtener int, float y otros tipos deben convertirse |
3 | Escáner | 1. Puede obtener la cadena escrita | —— |
2. Hay int, float y otros tipos de datos listos para usar, muy potentes y muy convenientes |
Método 1: entrada / salida
System es una clase que pertenece al paquete java.lang y representa una clase de sistema. Entre ellos, dentro y fuera están los atributos de la clase System.
package my;
import java.io.IOException;
//import java.io.BufferedReader;
//import java.io.InputStreamReader;
//import java.util.Scanner;
public class Hello
{
public static void main(String[] args)
{
//
/*
* System.in和System.out方法
* 缺点一:能获取键入的字符,但只能针对一个字符的获取
* 缺点二:获取的只是char类型(int、float等比较麻烦)
*/
try
{
System.out.println("输入一个Char:");
char i = (char)System.in.read(); // System类直接调用,返回InputStream类
System.out.println("输入的Char为:" + i);
}
catch(IOException e)
{
e.printStackTrace();
}
//
}
}
InputStream final estático público en // método estático
- Llámelo directamente con el nombre de la clase y devuelva la clase InputStream, lo que significa que se puede crear una instancia para InputStream.
- System.in es del tipo InputStream, flujo de bytes, el programa puede usarlo para leer los datos ingresados por el teclado.
- Flujo de entrada "estándar". Esta secuencia está abierta y lista para proporcionar datos de entrada. Por lo general, esta secuencia corresponde a la entrada del teclado u otra fuente de entrada especificada por el entorno de host o el usuario.
Public static final PrintStream out // método estático
- Llame directamente con el nombre de la clase y vuelva a la clase PrintStream, lo que significa que se puede crear una instancia para OutputStream
- System.out es del tipo PrintStream (una subclase de OutputStream), flujo de bytes, el programa puede usarlo para enviar datos a la pantalla.
- Flujo de salida "estándar". Esta secuencia está abierta y lista para aceptar datos de salida. Por lo general, esta secuencia corresponde a la salida de pantalla u otro destino de salida especificado por el entorno de host o el usuario.
Método 2: reemplazar el flujo del sistema
package my;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
//import java.util.Scanner;
public class Hello
{
public static void main(String[] args)
{
//
/*
* 替换系统流
* InputStreamReader和BufferedReader方法
* 优点:可以获取键入的字符串
* 缺点:若获取int、float等类型需要转换
*/
System.out.println("ReadTest, Please Enter Data:");
InputStreamReader is = new InputStreamReader(System.in); //new构造InputStreamReader对象
BufferedReader br = new BufferedReader(is); //拿构造的方法传到BufferedReader中,此时获取到整个缓存流
try
{
//该方法中有个IOExcepiton需要捕获
String name = br.readLine();
System.out.println("ReadTest Output:" + name);
}
catch(IOException e)
{
e.printStackTrace();
}
//
}
}
InputStreamReader
- El puente entre el flujo de bytes y el flujo de caracteres.
- La secuencia de bytes se puede generar como una secuencia de caracteres y el conjunto de caracteres se puede especificar para la secuencia de bytes.
BufferedReader
- Más avanzado que InputStreamReader, encapsula la clase StreamReader, lee una línea de caracteres a la vez y proporciona lectura de texto en búfer general.
- readLine lee una línea de texto, lee el texto del flujo de entrada de caracteres y almacena cada carácter, lo que proporciona una lectura eficiente de caracteres, matrices y líneas.
Método 3: escáner
package my;
//import java.io.BufferedReader;
//import java.io.IOException;
//import java.io.InputStreamReader;
import java.util.Scanner;
public class Hello
{
public static void main(String[] args)
{
//
/*
* Scanner
* 优点一:可以获取键入的字符串
* 优点二:有现成的获取int、float等类型数据,非常强大,非常方便
*/
Scanner sc = new Scanner(System.in);
System.out.println("ScannerTest, Please Enter Name:");
String name = sc.nextLine(); // 读取字符串型输入
System.out.println("ScannerTest, Please Enter Age:");
int age = sc.nextInt(); // 读取整型输入
System.out.println("ScannerTest, Please Enter Height:");
float height = sc.nextFloat(); // 读取float型输入
System.out.println("Your Information is as below:");
System.out.println("Name:" + name + "\n" +
"Age:" + age + "\n" +
"Height:" + height);
//
}
}
Escáner
- La nueva característica de Java5, la función principal es simplificar el escaneo de texto.
- Escáner significa escáner en chino, que consiste en escanear un dato de un lugar a otro.
- Un escáner de texto simple que puede usar expresiones regulares para analizar cadenas y tipos básicos.
notas
La diferencia entre next () y nextLine () comúnmente usados en java
siguiente(): | 1. Debe leer caracteres válidos antes de poder finalizar la entrada. | línea siguiente(): | 1. Tome Enter como terminador, lo que significa que el método nextLine () devuelve todos los caracteres antes del retorno de carro. |
---|---|---|---|
2. Para los espacios en blanco encontrados antes de ingresar caracteres válidos, el método next () los eliminará automáticamente. | |||
3. Solo después de ingresar caracteres válidos, los espacios en blanco ingresados después de ellos se utilizan como separadores o terminadores. | 2. Se puede obtener el blanco. | ||
4.next () no puede obtener una cadena con espacios. |