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
- System : es una classe de el paquete java.io
- out : es un campo estatico que acepta datos de salida
- 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
/* 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
*/