El mejor sistema filosófico de todos es el de Jesucristo: el sistema de la benevolencia. ( Carlo Dossi - 1849-1910. Carlo Alberto Pisani Dossi. Escritor italiano.)
Como crear una clase en java que lea desde el teclado
Publicado el Jueves 01 de septiembre de 2005 a las 18:02:16 por Fredy Ramirez
Lecturas
Bueno creo que empezare por decir que para esto utilizaremos dos clases contenidas en el paquete de entrada/salida de java (java.io), estas calses son: InputStreamReader y BufferedReader, además de el flujo de entrada System.in. Bueno para no enredarlos con tanta palabrería empecemos:
1.- Primero tenemos que importar el paquete io de java de la siguiente manera:
import java.io.*;
2.- Construimos una función para la lectura de entradas de tipo String, en esta función utilizaremos las clases InputStreamReader y BufferedReader, además de el objeto System.in:
public static String readStr() { String sdato = ""; try{ // Definir un flujo de caracteres de entrada: "readIn"... BufferedReader readIn = new BufferedReader(new InputStreamReader(System.in)); // Leer. La entrada, finaliza al pulsar la tecla Entrar... sdato = readIn.readLine(); } catch( IOException e) { System.err.println("Error: " + e.getMessage()); } return sdato; // Devolver el dato tecleado.. }
Si construiremos nuestra clase con solo este método de lectura nos quedaría de esta manera:
import java.io.*; public class readData { public static String readStr() { String sdato = ""; try{ BufferedReader readIn = new BufferedReader(new InputStreamReader(System.in)); sdato = readIn.readLine(); } catch( IOException e) { System.err.println("Error: " + e.getMessage()); } return sdato; } }
Así que des pues de esto compilamos, la clase para crear el *.class, una vez compilada la clase podemos utilizarla en nuestros programas, nada mas que solo nos serviría para datos de tipo String. Aquí un ejemplo de como se utilizaría:
import java.io.*; class testRead01{ public static void main(String args[]){ String Nombre = ""; System.out.println("Escribe tu nombre: "); Nombre = readData.readStr(); System.out.println("Tu nombre es: " + Nombre); } }
Compila y ejecuta este programa, tu salida deberá ser algo parecido a esto:
Escribe tu nombre: Fredy Ramirez Porfirio... Tu nombre es: Fredy Ramirez porfirio...
3.- Bien ahora crearemos los métodos para los demás tipos de todos utilizando el método para los tipos String para capturar la estrada desde el teclado, haciendo solo simples conversiones de datos, para conseguir los demás tipos.
Para datos enteros cortos:
public static short readShort() { try { return Short.parseShort(readStr()); } catch(NumberFormatException e) { return Short.MIN_VALUE; } }
Para datos Enteros:
public static short readInt() { try { return Integer.parseInt(readStr()); } catch(NumberFormatException e) { return Integer.MIN_VALUE; } }
Para datos enteros largos:
public static short readLong() { try { return Long.parseLong(readStr()); } catch(NumberFormatException e) { return Long.MIN_VALUE; } }
Para datos de punto flotante:
public static float readFloat() { try { Float f = new Float(readStr()); return f.floatValue(); } catch(NumberFormatException e){ return Float.NaN; } }
public static float readDouble() { try { Double d = new Double(readStr()); return d.doubleValue(); } catch(NumberFormatException e){ return Double.NaN; } }
Ahora si, si unimos estos métodos con la clase anterior, nuestra clase estará completa, quedando de la siguiente manera.
import java.io.*; public class readData { public static String readStr() { String sdato = ""; try{ BufferedReader readIn = new BufferedReader(new InputStreamReader(System.in)); sdato = readIn.readLine(); } catch( IOException e) { System.err.println("Error: " + e.getMessage()); } return sdato; } public static short readShort() { try { return Short.parseShort(readStr()); } catch(NumberFormatException e) { return Short.MIN_VALUE; } } public static short readInt() { try { return Integer.parseInt(readStr()); } catch(NumberFormatException e) { return Integer.MIN_VALUE; } } public static short readLong() { try { return Long.parseLong(readStr()); } catch(NumberFormatException e) { return Long.MIN_VALUE; } } public static float readFloat() { try { Float f = new Float(readStr()); return f.floatValue(); } catch(NumberFormatException e){ return Float.NaN; } } public static float readDouble() { try { Double d = new Double(readStr()); return d.doubleValue(); } catch(NumberFormatException e){ return Double.NaN; } } }
Espero que les sirva de algo, por el momento esto es todo.
bueno queria agradecer por este articulo por que realmente me sirvio para algo que no tenia claro... gracias.. te pediria un favor... para ver si sabes o si tienes un amigo que sepa como crear fondos en la interfaz o vision de las ventanas, pero que estos colores no sean ningunos de los que alli salen,, no se algo que haga ver a las ventanas supar pavas... cualquier cosa enviala a mi correo.. gracias..
Es mas facil utilizar la classe Scanner de la libreria util. Scanner scanner = new Scanner(System.in); scanner.useDelimiter(System.getProperty("line.separator")); System.out.printf("Proporcione valor para el arreglo en la posicion: %d %n", i); int valor = scanner.nextInt(); //aqui solo deberas utlizar el tipo de dato que recibirá tu variable. vacation = valor;
Es claro y útil el contenido. Sólo una cosa: Como estándar los nombres de clases deben empezar con Mayúsculas, así no las confundimos con nombres de variables o atributos. Un saludo.