1

Con motivo de redondear un número hacia arriba o hacia abajo en función de los decimales, he creado un pequeño método en java. El problema que me encuentro es que justo la línea después de aplicar split() me devuelve el error java.lang.ArrayIndexOutOfBoundsException: 0.

Dejo un ejemplo:

double descuento_pais = 59.5;                                       
double descuento_pais_final = damedescuento(descuento_pais);

public double damedescuento (double descuento) {

        String descuento_string = String.valueOf(descuento);
        String[] parts = descuento_string.split(".");
        String entero = parts[0]; 
        String decimal = parts[1]; 
        double descuento_pais;

        if (Double.parseDouble(decimal) >= 0.5) {
            descuento_pais = Double.parseDouble(entero) + 1;
        } else {
            descuento_pais = Double.parseDouble(entero);
        }

        return descuento_pais;
    }

1 Answers1

0

El problema es que String.split(String) espera que le suministres una expresión regular. Y el punto tiene significado especial en regex.

Para que interprete el punto literalmente, debes escaparlo con \\:

String[] parts = descuento_string.split("\\.");
sstan
  • 16,591
  • 2
  • 21
  • 45