Entrada Y Salida

Operaciones de entrada y salida en java

        En java los programas realizan entradas y salidas a través de streams. Los streams son abstracciones que consumen o producen información. Esto significa que un stream puede enlazar con diferentes tipos de dispositivos físicos. Los streams de entrada se vincularán a un dispositivo como un archivo de disco, un teclado o una conexión de red. Mientras que un stream de salida se vinculará a una consola, un archivo de disco o una conexión de red. Cuando se aprende a programar se empieza por utilizar dos streams estándar que se crean automáticamente para nosotros. Estos son: System.out( stream de salida estándar), System.in( stream de entrada estándar), y System.err(stream de error). 

Salida usando System.out

         En java la forma mas sencilla de monstrar nuestra salida es utilizando el stream de salida para enviar nuestra salida a la pantalla de  nuestra computadora. Hacemos esto usando una declaracion como System.out.print(). Donde:  
  • System : es una classe de el paquete java.io
  • out : es un campo estatico que acepta datos de salida
Para imprimir en la pantalla de la computadora utilizamos tres métodos diferentes: print(), println() y printf(). Las diferencias entre estos métodos son las siguientes:
  • print() – Imprime la cadena dentro de las comillas.
  • println() – Imprime la cadena dentro de las comillas y luego pasa al principio de la siguiente línea.
  • printf() – Proporciona el formato de la cadena.
				
					// Ejemplo #1:
// Programa usando print()

public class nombre {
  public static void main(String args[]) 
     System.out.printf("Hola Mundo");
        }
}
/*
salida:
Hola Mundo
*/
// Ejemplo #2:
// Programa usando println()
public class grado {
 
  public static void main(String args[]) {
        System.out.println("Nombre: Jose Garza ");
        System.out.print("Groupo: A  ");
        System.out.printf("Grado: 80 ");
        System.out.printf("gpa: 3.9 ");
        }
}
/*
salida:
Nombre: Jose Garza
Groupo: A 
Grado: 80 
Gpa: 3.9
*/
// Ejemplo #3:
// Programa usando printf()
import java.util.*;
public class archivo_grado {
    public static void main(String args[]) {
         int x = 80;
         float y = 3.9f;
         char c = 'A';
         String nombre = "Jose Garza";
         System.out.printf("Nombre: %s ",nombre);
         System.out.printf("Groupo: %c  ",c);
         System.out.printf("Grado : %d ",x);
         System.out.printf("gpa: %2.2f ", y);
        }
}
/*
salida:
Nombre: Jose Garza
Groupo: A 
Grado: 80 
Gpa: 3.9
*/
				
			

Entrada usando System.in

        En java la forma más común de recibir entradas es usando un teclado.El teclado recibe la entrada del usuario utilizando el objeto de la clase Scanner. Con el fin de utilizar el objeto de Scanner, tenemos que importar el paquete java.util.Scanner.
 
        En los siguientes ejemplos crearemos un objeto de la clase Scanner. Luego usaremos el objeto para recibir información del usuario.
				
					/* Ejemplo #1:
 Programa usando clase Scanner para recibir entradas.
 Para recibir los siguientes objetos como entrada utilizamos 
 estos métodos de la clase scanner:
 Integer -> nextInt()
 long -> nextLong() 
 float -> nextFloat()
 double -> nextDouble()
 */
 
import java.util.Scanner;
class entrada {
    public static void main(String[] args) {
    	
        Scanner en = new Scanner(System.in);
    	
    	// Obtener entrada de integer
        System.out.print("Introduce un número entero: ");
        int number = en.nextInt();
        System.out.println("numero entero entrado: " + number);

        // Obtener entrada de float
        System.out.print("Introduce un numero float: ");
        float myFloat = en.nextFloat();
        System.out.println("numero float entrado = " + myFloat);
    	
        // Obtener entrada de double
        System.out.print("Introduce un numero doble: ");
        double myDouble = en.nextDouble();
        System.out.println("numero doble entrado = " + myDouble);
    	
        // Obtener entrada de cadena
        System.out.print("introduzca el texto: ");
        String myString = en.next();
        System.out.println("cadena entrada = " + myString);
        
       
    }
}

				
			

Metodo hasNext()

       A veces querremos tomar continuamente la entrada del usuario, en estos casos usamos el método hasNext() del Scanner como la condición para un bucle while. Esto hará que el programa tome continuamente información del usuario hasta que el programa se cierre o encuentre una sentencia break.

				
					/* Ejemplo #1:
 En este programa primero tomamos el
 nombre de un estudiante como cadena de
 entrada. Luego tomamos 10 enteros
 continuamente y obtenemos su promedio.
 */
 
import java.util.Scanner;
class HelloWorld {
    public static void main(String[] args) {
    int t=0;
    double promedio=0;
    int cuenta=0;
    int total=0;
    
    Scanner scanner = new Scanner(System.in);
    System.out.print("Introduzca el nombre del estudiante: ");
    String nombre = scanner.next();
    System.out.print("Introduzca todos los resultados de los examenes del alumno: ");
    
    while (cuenta<10) {
    t = scanner.nextInt();
    total = total + t;
    cuenta++;}
    promedio = total/10;
    System.out.println("Nombre: " + nombre);
    System.out.println("promedio: " + promedio);
}
}
				
			

Metodo useDelimiter()

       Cuando usamos la clase scanner usamos la tecla enter para indicar que el usuario ha terminado su entrada. Pero esto se puede cambiar mediante el uso del método useDelimiter().

       Por ejemplo podemos usar un caracter como una coma(‘ , ‘) para separar una cadena de una en una. Usando un programa pasamos el texto String al constructor del Scanner, y luego separamos el texto entre el caracter dado en una subcadena donde encontremos el delimitador(‘ , ‘).

				
					/* Ejemplo #1:
   usamos el metodo useDelimiter()
   para separar cadenas
*/
import java.util.Scanner;
public class Main {
  public static void main(String[] args) {
    String csv = "e,f,g,h,i,j";
    Scanner scanner = new Scanner(csv);
    scanner.useDelimiter(",");
    while (scanner.hasNext()) {
      System.out.println(scanner.next());
    }
  }
}
/*
salida:
e
f
g 
h 
i 
j 
*/