(Ayuda) Problema en java

Publicado en 'Programación' por Freekmans, 24 Feb 2014.





  1. Freekmans

    Freekmans Miembro maestro

    Registro:
    10 Jun 2013
    Mensajes:
    489
    Likes:
    45




    Tengo un pequeñísimo problema en java. Tengo esta clase:

    package pruebabanco;
    public class Cuenta
    {
    private double saldo;
    //Constructor
    public Cuenta (double saldoInicial)
    {
    if(saldoInicial > 0.0)
    saldo = saldoInicial;
    }
    //Sumar saldo a cuenta
    public void abonar(double monto)
    {
    saldo = saldo + monto;
    }
    //Devuelve saldo de cuenta
    public double obtenerSaldo()
    {
    return saldo;
    }
    }

    Y mi principal que sería esta:

    package pruebabanco;
    import java.util.Scanner;
    public class PruebaBanco
    {

    public static void main(String[] args)
    {
    Cuenta cuenta1 = new Cuenta (50.00);
    Cuenta cuenta2 = new Cuenta (-7.53);

    System.out.printf("El saldo inicial de la cuenta 1 es $%.2f\n",cuenta1.obtenerSaldo());
    System.out.printf("El saldo inicial de la cuenta 2 es $%.2f\n",cuenta2.obtenerSaldo());

    Scanner entrada = new Scanner(System.in);
    double montoDeposito;

    System.out.print("Ingrese el monto que desea agregar a la cuenta 1: ");
    montoDeposito = entrada.nextDouble();
    System.out.printf("\nsumando %.2f al saldo de la cuenta 1\n\n", montoDeposito);
    cuenta1.abonar(montoDeposito);

    //mostrar los saldos

    System.out.printf("Saldo de cuenta 1: $%.2f\n",cuenta1.obtenerSaldo());
    System.out.printf("Saldo de cuenta 2: $%.2f\n\n",cuenta2.obtenerSaldo());

    System.out.print("Ingrese el monto que desea agregar a la cuenta 2: ");
    montoDeposito = entrada.nextDouble();
    System.out.printf("\nsumando $%.2f al saldo de la cuenta 2\n\n",montoDeposito);
    cuenta2.abonar(montoDeposito);

    //mostrar los saldos
    System.out.printf("Saldo de cuenta 1: $%.2f\n",cuenta1.obtenerSaldo());
    System.out.printf("Saldo de cuenta 2: $%.2f\n\n",cuenta2.obtenerSaldo());
    }
    }

    Cuando lo ejecuto y quiero agregar un monto en decimales (por ejm. 25.30) me da un error:
    El saldo inicial de la cuenta 2 es $0,00
    Ingrese el monto que desea agregar a la cuenta 1: 25.30
    Exception in thread "main" java.util.InputMismatchException
    at java.util.Scanner.throwFor(Scanner.java:909)
    at java.util.Scanner.next(Scanner.java:1530)
    at java.util.Scanner.nextDouble(Scanner.java:2456)
    at pruebabanco.PruebaBanco.main(PruebaBanco.java:18)
    Java Result: 1
    BUILD SUCCESSFUL (total time: 8 seconds)

    Pero cuando agrego un valor (por ejm. 20), se desarrolla normal. Como puedo hacer para poder ingresar los valores double? muchas gracias :w0w:
     


  2. kazoku

    kazoku Miembro maestro

    Registro:
    30 Abr 2012
    Mensajes:
    396
    Likes:
    58
    men agrega esto a tu Scanner:
    Scanner entrada = new Scanner(System.in).useLocale(Locale.US);

    bueno man la palabra "useLocale" no lleva espacios
     
    Última edición: 26 Feb 2014
  3. Jon Bon Jovi

    Jon Bon Jovi Miembro frecuente

    Registro:
    18 Abr 2011
    Mensajes:
    153
    Likes:
    21
    Si escribes 25,30 (con coma) en vez de 25.30 (con punto) el problema se soluciona.

    La solucion que propone kazoku tambien funciona. En ese caso puedes usar el punto normal.