[ Foro de Java ]
Hola, esta es la solución a uno de los problemas que planteas en tu manual:
/* -------------------------------------------------------- *
* Introducción a Java - Crea un programa que te pida tu *
* nombre y escriba un triángulo con las letras que lo *
* forman, mostrando primero la primera letra, luego las *
* dos primeras y asà sucesivamente, hasta llegar al nombre *
* completo, como en este ejemplo: *
* N *
* Na *
* Nac *
* Nach *
* Nacho *
* (Pista: tendrás que usar "substring" y un bucle "for") *
* Por David Nuñez, Ejercicio 1 Tema 7b *
* -------------------------------------------------------- *
* Fichero: DibujoNombre.java *
*----------------------------------------------------------*/
import java.io.*;
class DibujoNombre{
public static void main(String args[])
{
String nombre = "";
int i;
System.out.println("Hola, escribe tu nombre: ");
try{
BufferedReader entrada = new BufferedReader (new InputStreamReader (System.in));
nombre = entrada.readLine();
for(i=1;i<=5;i++)
{
System.out.println(nombre.substring(0,i));
}
}
catch (IOException e){}
}
}
Lo he compilado por linea de comando y funciona perfectamente pero mi duda surge porque si no utilizo try-catch no compila me da errores y no deberÃa ser asà no?? no entiendo porque tengo que utilizar esta estructura.
Gracias Nacho
Es así. En otros lenguajes no es necesario, pero en Java, tienes que usar un boque try..catch para poder leer desde teclado. Ten en cuenta que Java se puede usar en dispositivos que no tengan un teclado convencional (como un teléfono móvil o incluso un horno microondas), y en los que, por tanto, no tendría sentido una orden "readLine".
Tomo nota para ampliar ese apartado del curso con estos detalles. ;-)
Muchas gracias Nacho
Aprovecho la cuestión lanzada por David Nuñez para ampliar la pregunta:
¿Existe una norma genérica del uso try-catch?
Es decir, en la propia API de JAVA existen muchas excepciones creadas para poder gestionar posibles errores, pero...
¿Cómo sabe el desarrollador el momento exacto de usarlas si su naturaleza es muy variada?
¿Es una cuestión de experiencia adquirida o se puede intuir su uso?
Gracias por adelantado.
Yo estoy haciendo un ciclo superior de programación y en java usamos sistema.out.println sin try y catch
El problema no es en la salida (System.out) sino en la entrada.
En versiones antiguas de Java había que usar BufferedReader, que necesitaba try-catch. En versiones modernas se puede usar Scanner, más sencillo y que no necesita try-catch. Supongo que será esa la construcción que estaréis usando para leer datos desde teclado.
Por cierto, he visto que había una pregunta sin contestar referida a cómo saber qué posibles excepciones pueden saltar. Básicamente hay dos formas de saberlo: mirar primero en la referencia oficial o bien probar a compilar y esperar a obtener un error de compilación que nos diga que debemos interceptar o lanzar una cierta excepción.
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)