Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > Excepcion dentro de un bucle? Novata!

Hola a todos! Estoy haciendo un curso de Java online y tengo una dudilla con un programa creo "bastante facilillo". Les agradecería muchísimo si pudieran echarme una mano.
Consiste en un bucle que va pidiendo números, los va guardando en una lista, y sólo deja de pedir números si se mete uno negativo. Pero en caso de que se meta un carácter no numérico, tiene que llamar a una excepción que avise de ello, y CONTINUAR con el programa. El caso es que no sé como ponerlo, o se me sale del bucle o me entra en un bucle infinito. El programita es el siguiente:

package ejercicio1;
import java.util.*;
public class Ejercicio1 {
public static void main(String[] args) {
Vector num=new Vector();
int i=0,n=0;
Scanner sc=new Scanner(System.in);

do{
System.out.printf("Numero: ");
try{
n=sc.nextInt();
num.add(n);
}
catch(Exception e){
System.out.println("El dato introducido no es un valor numérico.");
}
}while(n>0);
}

Concretamente poniendolo así me entra en un bucle infinito, y no tengo ni idea de por qué!

Muchas gracias de antemano!!

agosto 22, 2013 | Registered Commenterwanjiru

Buenas,

Viendolo de forma rapida y sin probar, diria que el valor n se queda en un estado inconsistente y por eso se te queda el programa colgado.

Dentro la de la excepcion que capturas deberias darle un valor valido para que el bucle continue. Por ejemplo:


catch(Exception e){
System.out.println("El dato introducido no es un valor numérico.");
//Damos un valor positivo a n para que continue el programa
n=999;
}

Un saludo

agosto 22, 2013 | Unregistered CommenterUnoPorAhi

Los vectores son thread safe, no creo que necesites usar un vector para guardar los numeros

agosto 26, 2013 | Registered Commentersuper

Es un completo misterio para mí que se siga enseñando el uso de Vector, desde el comienzo de cualquier curso de Java.

La clase Vector apareció con JavaSE 1.0, sin embargo las Collections aparecieron con JavaSE 1.2, por lo que no hay tanta diferencia en el tiempo que justifique a estas alturas, 15 años más tarde, esa insistencia en los cursos.

El Javadoc de Vector dice:

http://docs.oracle.com/javase/7/docs/api/java/util/Vector.html

"As of the Java 2 platform v1.2, this class was retrofitted to implement the List interface, making it a member of the Java Collections Framework. Unlike the new collection implementations, Vector is synchronized. If a thread-safe implementation is not needed, it is recommended to use ArrayList in place of Vector."

¿Es que los diseñadores de cursos no leen los Javadocs del JDK?

agosto 26, 2013 | Registered Commenterchoces

InfoThis thread has been locked.