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
/*
* 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)