Problema con excepciones.

Iniciado por |Miguel|, 5 Febrero 2012, 19:29 PM

0 Miembros y 1 Visitante están viendo este tema.

|Miguel|

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 (java) [Seleccionar]
/*
* Haz un programa que sume los elementos double de un array dinámico que le
* vamos pasando. Saltarán las excepciones oportunas cuando le pasemos números
* en formato inadecuado.
*/
package ejercicio050;
import java.util.Scanner;

public class Ejercicio050 {

   public static void main(String[] args) {
       String longitud;
       double suma=0;
       Scanner s=new Scanner(System.in);
       System.out.print("¿Cuántos elementos quieres? ");
       try{
           longitud=s.nextLine();
       }
       catch(Exception e){
           do{
               System.out.println("Longitud no válida. Introduzca otra.");
               longitud=s.nextLine();
           }while(!isNumeric(longitud));
       }
       String array[]=new String[Integer.parseInt(longitud)];
       
       for(int i=0; i<Integer.parseInt(longitud); i++){
           System.out.print("Introduce el valor de la posición "+(i+1)+": ");
           array[i]=s.nextLine();
       }
       
       for(int i=0; i<Integer.parseInt(longitud); i++){
           try{
               suma+=Double.parseDouble(array[i]);
           }
           catch(Exception e){
               System.out.println("El elemento "+(i+1)+" no es numérico.");
           }
       }
       System.out.println("La suma de los elementos es: "+suma);
   }
   
   private static boolean isNumeric(String cadena){
try {
Double.parseDouble(cadena);
return true;
} catch (NumberFormatException nfe){
return false;
}
}
}


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)