PDA

Ver la versión completa : Resolver este ejercicio JAVA



gregowebs01
22-09-2012, 21:35
Hola amigos, bueno pues tengo que realizar este ejercicio en java, pero me gustaría tener una buena explicación de como resolverlo. El ejercicio es el siguiente :


Modifique el método main de la clase MyClass, añadiendo las sentencias necesarias para que lea un número entero del teclado y lo muestre en la pantalla.

Y el codigo que me dan para modificar es este:


1 import java.util.*;
2 /**
3 * Ejercicio de Introducción a la Informática
4 */
5 public class MyClass {
6 /**
7 * Método principal a modificar. Debe leer un número entero y
8 * mostrar en pantalla su valor
9 */
10 public static void main(String[] args) {
11 Scanner input = new Scanner(System.in);
12 System.out.print("Introduce un valor entero: ");
13
14 System.out.print("Has introducido el valor: ");
15
16 }
17 }

Me podrían explicar como es el proceso y que necesito saber para resolver este tipo de ejercicios ? No quiero la solución en sí, si no más bien una explicación para poder aprender a hacer otros ejercicios similares que se me planteen.

Muchas gracias!

hystd
23-09-2012, 22:41
Hay muchas formas de leer desde el teclado, y más concretamente de la entrada estandar (System.in) de Java.

En tu caso, parece ser que te lo están pidiendo mediante el uso de la clase Scanner. Lo primero que debes hacer es echarle un vistazo a la documentación oficial de esa clase: Scanner (http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Scanner.html).

Esa clase implementa todo lo necesario para leer datos de entrada, desde una cadena de texto, un descriptor de fichero, o un flujo de entrada (InputStream). Puedes verlo con detalle simplemente viendo los métodos constructores.

En tu caso, lees desde System.in, que es la entrada estándar (el teclado).

Si observas los métodos que tiene dicha clase, para leer cualquier byte, caracter, entero o cadena, tienes los métodos "next".

En tu ejercicio te piden "leer un número", asi que deberás usar el método "nextInt()":


1 import java.util.*;
2 /**
3 * Ejercicio de Introducción a la Informática
4 */
5 public class MyClass {
6 /**
7 * Método principal a modificar. Debe leer un número entero y
8 * mostrar en pantalla su valor
9 */
10 public static void main(String[] args) {
11 Scanner input = new Scanner(System.in);
12 System.out.print("Introduce un valor entero: ");
13 int numero = input.nextInt();
14 System.out.print("Has introducido el valor: "+numero);
15
16 }
17 }

Otra alternativa, un poco más elaborada, pero más versátil, pues no restringe la lectura únicamente de enteros, sería haciendo uso de nextLine(), en vez de nextInt():



public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Introduce un valor entero: ");
String entrada = input.nextLine();
int numero = Integer.parseInt(entrada);
System.out.print("Has introducido el valor: "+numero);


En este caso, lees una cadena de texto, y luego la conviertes a entero. Para este caso, deberás validar la entrada antes de guardarla o trabajar con ella en un futuro, pues podría ser el inicio de un bonito bug o de un fallo de seguridad. Lo recomendado para validar la entrada es utilizar expresiones regulares, y la clase Scanner te da opciones para ello.

En cuanto a la última línea, puede sustituirse por cualquiera de estas opciones:



System.out.println("Has introducido el valor: "+String.valueOf(numero));
System.out.println("Has introducido el valor: "+Integer.toString(numero));


Un saludo.

BumperZ
25-09-2012, 21:59
Genial la respuesta y muy currada.