style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">

Problemas con el manejo de Excepciones

Saludos JavaMexico:

Este un programa que consiste en convertir (euros a dolares) y (dolares a euros) , pero que hay que lanzar todas las excepciones posibles.

Yo me cree algunas excepciones: como ser 1) ExcepcionMonto: sirve para verifcar que lo que se ingresa por teclado es un numero y no otra cosa y la 2) ExcepcionMoneda: sirve para verificar si la moneda que ingresa solo sea euros o dolares (usd). por que solo convierte ese tipo de monedas. Pero el problema es que me lanza una excepcion cuando ingreso por teclado:

_____
Ingrese el monto a convertir... (monto moneda) solo minusculas
a
java.lang.NumberFormatException: For input string: "a"

at sun.misc.FloatingDecimal.readJavaFormatString(Unknown Source)
at java.lang.Double.parseDouble(Unknown Source)
at com.mnemo.formacion.ejercicio4_5_Conversiones_Monetarias.ConversionesMonetarias.main(ConversionesMonetarias.java:28)
com.mnemo.formacion.ejercicio4_5_Conversiones_Monetarias.ExcepcionMoneda: La moneda no es usd o euros
at com.mnemo.formacion.ejercicio4_5_Conversiones_Monetarias.ConversionesMonetarias.main(ConversionesMonetarias.java:50)
¿desea continuar si/no?
_____-

Pero estas excepciones estan mezcladas entre las propias de JAVA y las mias. No se como puede controlar esta excepcion.

mi codigo es:

package com.mnemo.formacion.ejercicio4_5_Conversiones_Monetarias;

import java.util.Scanner;

public class ConversionesMonetarias
{
        public static double euroAdolar(double euro, double factorCambioaDolar) {
                return (euro * factorCambioaDolar);
        }

        public static double dolarAeuro(double dolar, double factorCambioaEuro) {
                return (dolar / factorCambioaEuro);
        }

        public static void main(String [] args) {
                double dinero = 0, dolar, euro, factorEuro_Cambio_dolar = 1.2573;
                String moneda = "", monto = "", opcion = "";
                Scanner escritura = new Scanner (System.in);

                do {
                        System.out.println ("Ingrese el monto a convertir... (monto moneda) solo minusculas");
                        monto = escritura.nextLine ();

                        Scanner escritura2 = new Scanner (monto);

                        if (escritura2.hasNext ()) {
                                try {
                                        dinero = Double.parseDouble (escritura2.next ());
                                } catch (NumberFormatException e) {
                                        e.printStackTrace ();
                                }

                        }
                        if (escritura2.hasNext ()) {
                                moneda = escritura2.next ();
                        }

                        if (moneda.equals ("usd") || moneda.equals ("euros")) {
                                if (moneda.equals ("euros")) {
                                        dolar = euroAdolar (dinero, factorEuro_Cambio_dolar);
                                        System.out.println (dinero + " " + moneda + " = " + dolar+ " dolar");
                                }

                                if (moneda.equals ("usd")) {
                                        euro = dolarAeuro (dinero, factorEuro_Cambio_dolar);
                                        System.out.println (dinero + " " + moneda + " = " + euro+ " euros ");
                                }
                        } else {
                                try {
                                        throw new ExcepcionMoneda ("La moneda no es usd o euros ");
                                } catch (ExcepcionMoneda e) {
                                        e.printStackTrace ();
                                }
                        }

                        Scanner eleccion = new Scanner (System.in);
                        System.out.println ("¿desea continuar si/no?");
                        opcion = eleccion.next ();
                        System.out.println ("opcion que eligio ... " + opcion);

                } while (!opcion.equals ("no"));

                System.out.println ("Gracias....");
        }
}

Excepcion de Moneda:

package com.mnemo.formacion.ejercicio4_5_Conversiones_Monetarias;

public class ExcepcionMoneda extends Exception
{
        public ExcepcionMoneda(String texto)
        {
                super (texto);
                System.out.println ();
        }
}

Excepcion de Monto:

package com.mnemo.formacion.ejercicio4_5_Conversiones_Monetarias;

public class ExcepcionMonto extends NumberFormatException
{
        public ExcepcionMonto(String texto)
        {
                super(texto);
                System.out.println ();
                System.out.println ();
        }
}

les agradeceria encuentren donde estan mis errores. Gracias de antemano por su ayuda.

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

No lanzes la excepcion ni la

No lanzes la excepcion ni la imprimas. De hecho no es una excepcion, es una validación y la diferencia es que la estas esperando, es algo que sabes que puede pasar, no es algo excepcionnal.

Me suena a que en realidad quieres mostrar un mensaje de validación.

En vez de escribir aquí mucho sobre como si y como no, mejor te pongo TU código, modificado ( es lo bueno que se ponga un ejemplo fácil de correr )
y un ejemplo se la sesión.

Saludos!

// Ejercicio 4.5 conversiones montarias
package com.mnemo.formacion.conversionesmonetarias;
import java.util.Scanner;
public class ConversionesMonetarias
{
        public static double euroAdolar(double euro, double factorCambioaDolar) {
                return (euro * factorCambioaDolar);
        }
        public static double dolarAeuro(double dolar, double factorCambioaEuro) {
                return (dolar / factorCambioaEuro);
        }
        public static void main(String [] args) {

                double dinero = 0;
                double dolar;
                double euro;
                double factorEuro_Cambio_dolar = 1.2573;

                String moneda = "";
                String monto = "";
                String opcion = "";

                Scanner escritura = new Scanner (System.in);
                do {
                        System.out.println ("Ingrese el monto a convertir: monto moneda ejemplo: 2 EUROS o 1 USD");
                        monto = escritura.nextLine ();
                        Scanner escritura2 = new Scanner (monto);
                        if (escritura2.hasNext ()) {
                                try {
                                    dinero = Double.parseDouble (escritura2.next ());
                                } catch (NumberFormatException e) {
                                    System.out.println("El formato del monto debe de ser: xx.xxx ejemplo 1.0 o 1");
                                    continue;
                                }
                        }
                        if (escritura2.hasNext ()) {
                                moneda = escritura2.next().toLowerCase();
                        }
                        if (moneda.equals ("euros")) {
                            dolar = euroAdolar (dinero, factorEuro_Cambio_dolar);
                            System.out.println (dinero + " " + moneda + " = " + dolar+ " dolar");
                        } else if (moneda.equals ("usd")) {
                            euro = dolarAeuro (dinero, factorEuro_Cambio_dolar);
                            System.out.println (dinero + " " + moneda + " = " + euro+ " euros ");
                        } else {
                            System.out.println("La moneda debe de ser \"usd\" o \"euros\"");
                        }

                        Scanner eleccion = new Scanner (System.in);
                        System.out.println("¿desea continuar si/no?");
                        opcion = eleccion.next ();
                        System.out.println ("opcion que eligio ... " + opcion);
                } while (!opcion.equals ("no"));
                System.out.println ("Gracias....");
        }
}
 class ExcepcionMoneda extends RuntimeException
{
        public ExcepcionMoneda(String texto)
        {
                super (texto);
                System.out.println ();
        }
}
class ExcepcionMonto extends NumberFormatException
{
        public ExcepcionMonto(String texto)
        {
                super(texto);
        }
}

style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">