Java - Pedir ingreso de datos

 
Vista:
sin imagen de perfil

Pedir ingreso de datos

Publicado por Yasser (1 intervención) el 12/10/2016 18:17:09
Buen día a todos.

Estoy en mis primero pasos progrmando en Java pero me topé con una duda.
He visto e varias webs y libros que para pedir el ingreso de datos en Java hay varias formas.

Ejemplo:

1)
1
2
3
String entradaTeclado = "";
Scanner entradaEscaner = new Scanner (System.in);
entradaTeclado = entradaEscaner.nextLine ();

2)
1
2
3
4
5
6
7
String bb=JOptionPane.showInputDialog("Ingresa base : ");
Stringhh=JOptionPane.showInputDialog("Ingresa altura : ");
 
b=Integer.parseInt(bb);
h=Integer.parseInt(hh);
 
// Creo que este ejemplo está incompleto, pero así lo encontré en un pdf :/

3)

1
2
3
4
5
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Por favor ingrese su nombre");
String nombre = br.readLine();
System.out.println("Bienvenido " + nombre + ". Por favor ingrese su edad");
String entrada = br.readLine();


Si bien son 3 ejemplos diferentes, la estructura debería ser la misma (creo yo).
Agradecería me puedan aclarar en qué casos es mejor utilizar una de estas estructuras y si hay mas.
Me gusta bastante la teoría así que si tienen tiempo pueden explayarse, quiero aprender el porqué no solo hacerlo mecánicamente. Gracias por la ayuda.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Pedir ingreso de datos

Publicado por YYanes (144 intervenciones) el 12/10/2016 19:47:21
Hola amigo, y de antemano mi felicitación por su carácter y su interés por aprender y COMPRENDER las cosas más allá de la memorización automática!!

1- En el caso 1 capta la entrada mediante la utilización de Scanner, pues bien, la clase Scanner esta diseñada para leer los bytes y convertirlos en valores primitivos (int, double, bool, etc) o en valores String. Usualmente esta vía es utilizada en programas modo consola (sin componentes visuales ni ventanas más que la consola semejante al Command de Windows). Por ejemplo:

int edad = 0;
Scanner teclado = new Scanner(System.in); //-- declaramos una variable Scanner para almacenar la informacion que el usuario introduce.
System.out.println(“Que edad tienes?”); //--Se imprime una línea preguntando la edad al usuario
edad = teclado.nextInt(); //-- los bytes captados en la entrada del usuario son convertidos a int y asignados a la variable "edad"

2- El caso 2 (utilizando showInputDialog): ya esta vía utiliza cuadros de diálogo (ventanas con botones), y lo que hace es abrir una pequeña ventanita con un campo de entrada y los botones "aceptar" y "cancelar". El valor entrado se reconocerá como un String que luego podrá convertirse a otros tipos mediante el Parse, por ejemplo: int val = Integer.parseInt(miString);

Nota: Para utilizar cualquier función de JOptionPane deberá incluir en su cabecera lo siguiente: import javax.swing.JOptionPane;
Otras funciones de esta clase son:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 //-- mostrar un mensaje en pantalla
JOptionPane.showMessageDialog(null, "mensaje");
 
//--- Mostrar mensaje de error:
JOptionPane.showMessageDialog(null,"Este es un mensaje de error","Aviso de error",0);
 
//--- Mostrar mensaje de notificación:
JOptionPane.showMessageDialog(null,"Este es un mensaje de notificación","Notificación:",1);
 
//--- Mostrar mensaje de alerta:
JOptionPane.showMessageDialog(null,"Este es un mensaje de alerta","Aviso",2);
 
//--- Mensje de confirmación para salir del sistema ----------------------------------
if(JOptionPane.showConfirmDialog(null, "¿Seguro que desea salir?", "Confirmación",0) == 0)
     System.exit(0);

3- El caso 3 (BufferedReader): Las clases BufferedReader y BufferedWriter las podemos encontrar en java.io. Estas clases tienen la misma función que FileReader y FileWriter, leer y escribir en ficheros, pero BufferedReader y BufferedWriter optimizan estas funciones. Por ejemplo:

1
2
BufferedReader br=new BufferedReader(new FileReader("D:\\fichero1.txt"));
BufferedWriter bw=new BufferedWriter(new FileWriter("D:\\fichero1.txt"));

La mayor ventaja de los buffered es con el BufferedReader que nos permite leer una linea completa, en lugar de caracter a caracter. En el ejemplo que pones se utiliza con ese fin: leer una línea completa independientemente de los espacios que tenga. Pero veamos un ejemplo práctico de cómo sería aplicado a ficheros:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import java.io.*; //Importamos todas las clases de java.io.
public class FicheroTextoBufferedApp {
	public static void main(String[] args) {
		try(BufferedReader br=new BufferedReader(new FileReader("D:\\fichero1.txt"));
			BufferedWriter bw=new BufferedWriter(new FileWriter("D:\\fichero1.txt"));){
			//Escribimos en el fichero
			bw.write("Esto es una prueba usando Buffered");
			bw.newLine();
			bw.write("Seguimos usando Buffered");
			//Guardamos los cambios del fichero
			bw.flush();
			//Leemos el fichero y lo mostramos por pantalla
			String linea=br.readLine();
			while(linea!=null){
				System.out.println(linea);
				linea=br.readLine();
			}
		}catch(IOException e){
			System.out.println("Error E/S: "+e);
		}
	}
}

Las ventajas de uno u otro método están en dependencia de las necesitades de cada programador. No existe un método "mejor" que otro si el resultado es funcional. Por lo general (hablando de tendencias) en la mayoría de las aplicaciones en modo consola se utiliza el método 1, en la mayoría de las aplicaciones visuales se utiliza el método 2, mientras que las funciones Buffered se utilizan más para ficheros; no obstante eso no es una camisa de fuerza, cada programador es libre de construirse su propio estilo.
Espero haberle servido de algo.

Un GigaSaludo!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar