Foro de elhacker.net

Programación => Java => Mensaje iniciado por: |Miguel| en 5 Febrero 2012, 19:29 pm



Título: Problema con excepciones.
Publicado por: |Miguel| en 5 Febrero 2012, 19:29 pm
Hola, muy buenas a todos.
Tengo un problema... no sé porqué no me funciona este ejercicio... al compilar, llego hasta meter el número de elementos del array y ahí ya se queda sin hacer nada, ni da errores, ni sigue pidiendo datos (como debería) ni nada...

Os dejo el código a ver si veis algo. Estoy usando NetBeans 7.0.1
Código
  1. /*
  2.  * Haz un programa que sume los elementos double de un array dinámico que le
  3.  * vamos pasando. Saltarán las excepciones oportunas cuando le pasemos números
  4.  * en formato inadecuado.
  5.  */
  6. package ejercicio050;
  7. import java.util.Scanner;
  8.  
  9. public class Ejercicio050 {
  10.  
  11.    public static void main(String[] args) {
  12.        String longitud;
  13.        double suma=0;
  14.        Scanner s=new Scanner(System.in);
  15.        System.out.print("¿Cuántos elementos quieres? ");
  16.        try{
  17.            longitud=s.nextLine();
  18.        }
  19.        catch(Exception e){
  20.            do{
  21.                System.out.println("Longitud no válida. Introduzca otra.");
  22.                longitud=s.nextLine();
  23.            }while(!isNumeric(longitud));
  24.        }
  25.        String array[]=new String[Integer.parseInt(longitud)];
  26.  
  27.        for(int i=0; i<Integer.parseInt(longitud); i++){
  28.            System.out.print("Introduce el valor de la posición "+(i+1)+": ");
  29.            array[i]=s.nextLine();
  30.        }
  31.  
  32.        for(int i=0; i<Integer.parseInt(longitud); i++){
  33.            try{
  34.                suma+=Double.parseDouble(array[i]);
  35.            }
  36.            catch(Exception e){
  37.                System.out.println("El elemento "+(i+1)+" no es numérico.");
  38.            }
  39.        }
  40.        System.out.println("La suma de los elementos es: "+suma);
  41.    }
  42.  
  43.    private static boolean isNumeric(String cadena){
  44. try {
  45. Double.parseDouble(cadena);
  46. return true;
  47. } catch (NumberFormatException nfe){
  48. return false;
  49. }
  50. }
  51. }

Gracias a todos.

EDITO: He quitado el s.next(); de las líneas 17,22 y 29 y parece que va bien. lo puse porque a veces da problemas el retorno de carro al leer varias cadenas, voy a hacer unas pruebas a ver que pasa.

EDITO 2: perfecto. Un ejemplo de la ejecución...
run:
¿Cuántos elementos quieres? 5
Introduce el valor de la posición 1: 5
Introduce el valor de la posición 2: 6
Introduce el valor de la posición 3: p
Introduce el valor de la posición 4: 7
Introduce el valor de la posición 5: l
El elemento 3 no es numérico (p).
El elemento 5 no es numérico (l).
La suma de los elementos es: 18.0
BUILD SUCCESSFUL (total time: 23 seconds)