Foros aprenderaprogramar.com
Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: Choripan en 07 de Abril 2014, 18:15
-
Hola, necesito ayuda resolviendo el siguiente problema.
Imaginen que tengo el siguiente codigo en mi programa, con variables double.
numeroUno = JOptionPane.showInputDialog ( "Asignele un valor numerico a A:" );
a1 = Integer.parseInt( numeroUno );
El programa funciona de matavilla, se pude introducir el valor de A sin ningun problema, el programa funciona como yo quiero que lo haga, pero ahora... si yo introduzco un valor alfanumerico o un signo que NO sea un numero, o simplemente no introduzco ningun valor, el programa se cierra, mi duda es la siguiente:
*Como puedo hacer que el programa reconozca que el valor que se introdujo no era el adecuado,m y al hacer esto salga un aviso que diga "El valor que usted introdujo era incorrecto, intentelo de nuevo" y el programa no se cierre, si no regrese a la ventana en donde se introduce el valor de A.
Espero haberme explicado lo suficientemente bien. Gracias.
-
Tal y como lo planteas, JOptionPane.showInputDialog te proporciona una cadena de texto (String). Por tanto el tipo de variable que es se conoce (es String).
Entonces lo que te estás preguntando es si un String contiene un número o no (se supone que para saber si puedes convertirlo a un formato numérico como entero o decimal). Esto parece una pregunta sencilla pero no lo es tanto. De hecho hay muchas formas de resolverlo. La forma que encuentro quizás más limpia es usar expresiones regulares. En concreto este método te dice si un String contiene un número:
public static boolean isNumeric(String str) {
return (str.matches("[+-]?\\d*(\\.\\d+)?") && str.equals("")==false);
}
Aquí un ejemplo de cómo sería con código ejecutable:
import javax.swing.JOptionPane;
public class comprobarSiEsNumero {
public static void main (String[] Args) {
String entradaUsuario = "";
while (isNumeric(entradaUsuario)==false){
entradaUsuario = JOptionPane.showInputDialog ( "Asignele un valor numerico a A (usar . como separador decimal):" );
if (isNumeric(entradaUsuario) == true) {
System.out.println ("Entrada OK, introdujo el número " + entradaUsuario); }
else {
System.out.println ("Entrada no válida, no introdujo un número"); }
}
}
public static boolean isNumeric(String str) {
return (str.matches("[+-]?\\d*(\\.\\d+)?") && str.equals("")==false);
}
}
-
Muchas Gracias Alex, tu informacion me va de maravilla. Tratare ahora de entenderla lo mejor que puedo y tratar de usarla lo mejor que pueda. GRACIAS