Java | Tres métodos de entrada de lenguaje Java en la consola de Eclipse

Escrito en el contenido anterior, la entrada de la consola Java es solo un poco "" "
Inserte la descripción de la imagen aquí

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();
          }
          
          //
     }
}

Inserte la descripción de la imagen aquí

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();
          }
          
          //
     }
}

Inserte la descripción de la imagen aquí

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);
          
          
          //
     }
}

Inserte la descripción de la imagen aquí

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.

Supongo que te gusta

Origin blog.csdn.net/weixin_44421798/article/details/112544038
Recomendado
Clasificación