JavaRush /Blog Java /Random-ES /Flujos y cadenas de E/S en Java
articles
Nivel 15

Flujos y cadenas de E/S en Java

Publicado en el grupo Random-ES
Para ingresar datos se utiliza una clase de la biblioteca de paquetes de Java Scanner. Flujos y cadenas de E/S en Java - 1Esta clase debe importarse en el programa donde se utilizará. Esto se hace antes de que comience la clase pública en el código del programa. La clase tiene métodos para leer el siguiente carácter de un tipo determinado del flujo de entrada estándar, así como para verificar la existencia de dicho carácter. Para trabajar con un flujo de entrada, debe crear un objeto de la clase Scanner , especificando durante la creación con qué flujo de entrada se asociará. El flujo de entrada estándar (teclado) en Java está representado por un objeto: System.in. Y el flujo de salida estándar (visualización) es un objeto que ya le resulta familiar System.out. También hay un flujo estándar para la salida de errores System.err, pero trabajar con él está fuera del alcance de nuestro curso.
import java.util.Scanner; // импортируем класс
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in); // создаём un objeto класса Scanner
        int i = 2;
        System.out.print("Введите целое число: ");
        if(sc.hasNextInt()) { // возвращает истину если с потока ввода можно считать целое число
          i = sc.nextInt(); // считывает целое число с потока ввода и сохраняем в переменную
          System.out.println(i*2);
        } else {
          System.out.println("Вы ввели не целое число");
        }
    }
}
El método hasNextDouble()aplicado a un objeto de la clase Scannercomprueba si se puede leer un número real de tipo desde el flujo de entrada doubley el método nextDouble()lo lee. Si intenta leer un valor sin verificarlo primero, puede obtener un error durante la ejecución del programa (el depurador no detectará dicho error de antemano). Por ejemplo, intente ingresar un número real en el siguiente programa:
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        double  i = sc.nextDouble(); // если ввести букву s, то случится ошибка во время исполнения
        System.out.println(i/3);
    }
}
También existe un método nextLine()que le permite leer una secuencia completa de caracteres, es decir. cadena, lo que significa que el valor obtenido a través de este método debe almacenarse en un objeto de clase String. En el siguiente ejemplo, se crean dos de estos objetos, luego la entrada del usuario se escribe en ellos uno por uno y luego se muestra una cadena en la pantalla, obtenida combinando las secuencias de caracteres ingresadas.
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String s1, s2;
        s1 = sc.nextLine();
        s2 = sc.nextLine();
        System.out.println(s1 + s2);
    }
}
También existe un método hasNext()que comprueba si quedan caracteres en el flujo de entrada. La clase Stringtiene una gran cantidad de métodos útiles que se pueden aplicar a cadenas (antes del nombre del método indicaremos el tipo de valor que devuelve):
  1. int length()— devuelve la longitud de la cadena (el número de caracteres que contiene);
  2. boolean isEmpty()— comprueba si la cadena está vacía;
  3. String replace(a, b)— devuelve una cadena donde el carácter a (literal o variable de tipo char) se reemplaza por el carácter b;
  4. String toLowerCase()— devuelve una cadena donde todos los caracteres de la cadena original se convierten a minúsculas;
  5. String toUpperCase()— devuelve una cadena donde todos los caracteres de la cadena original se convierten a mayúsculas;
  6. boolean equals(s)— devuelve verdadero si la cadena a la que se aplica el método coincide con la cadena especificada en el argumento del método (no se puede comparar usando el ==operador de cadena, como cualquier otro objeto);
  7. int indexOf(ch)— devuelve el índice del carácter ch en una cadena (el índice es el número ordinal del carácter, pero los caracteres se numeran comenzando desde cero). Si el carácter no se encuentra en absoluto, devolverá -1. Si un carácter aparece más de una vez en una cadena, devolverá el índice de su primera aparición.
  8. int lastIndexOf(ch)- similar al método anterior, pero devuelve el índice de la última aparición si el símbolo aparece varias veces en la línea.
  9. int indexOf(ch,n)— devuelve el índice del carácter ch en la cadena, pero comienza a verificar desde el índice n (el índice es el número ordinal del carácter, pero los caracteres se numeran comenzando desde cero).
  10. char charAt(n)— devuelve el código del carácter ubicado en la línea bajo el índice n (el índice es el número de serie del carácter, pero los caracteres están numerados comenzando desde cero).
public class Main {
    public static void main(String[] args) {
        String s1 = "firefox";
        System.out.println(s1.toUpperCase()); // выведет «FIREFOX»
        String s2 = s1.replace('o', 'a');
        System.out.println(s2); // выведет «firefax»
        System.out.println(s2.charAt(1)); // выведет «i»
        int i;
        i = s1.length();
        System.out.println(i); // выведет 7
        i = s1.indexOf('f');
        System.out.println(i); // выведет 0
        i = s1.indexOf('r');
        System.out.println(i); // выведет 2
        i = s1.lastIndexOf('f');
        System.out.println(i); // выведет 4
        i = s1.indexOf('t');
        System.out.println(i); // выведет -1
        i = s1.indexOf('r',3);
        System.out.println(i); // выведет -1
    }
}
Un ejemplo de un programa que mostrará los índices de todos los espacios en una línea ingresada por el usuario desde el teclado:
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String s = sc.nextLine();
        for(int i=0; i < s.length(); i++) {
            if(s.charAt(i) == ' ') {
                System.out.println(i);
            }
        }
    }
}
Enlace a la fuente: secuencias y cadenas de E/S en Java
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION