Não sei mais o que fazer: Não consigo fazer a conversão de String
para Double
, quando existem valores em branco no vetor! O vetor que estou manipulando possui muitos valores em branco.
Como exemplo, considere o vetor abaixo:
String[] multasContratuais = {"", "2368000000","2153000000.00","1989000000.00", "","1958000000.00","1742000000.00", ""};
Essa linha faz, ou deveria fazer, a conversão:
multas[i] = Double.parseDouble(multasContratuais[i]);
Ao compilar, não apresenta erros, porém, em tempo de execução, ele lança a seguinte exceção:
Exception in thread “main” java.lang.NumberFormatException: empty String
at sun.misc.FloatingDecimal.readJavaFormatString(Unknown Source)
at sun.misc.FloatingDecimal.parseDouble(Unknown Source)
at java.lang.Double.parseDouble(Unknown Source)
at ConverterDeStringParaDouble.main(ConverterDeStringParaDouble.java:13)
Já pensei em substituir os itens vazios por “0”, embora eu saiba que não é o mesmo que nulo ou em branco:
vetorAuxiliar[i] = multasContratuais[i].replace("", "0");
multas[i] = Double.parseDouble(vetorAuxiliar[i]);
Mas ele coloca zero entre os números:
0,00
20306080000000000000,00
20105030000000000000,00
10908090000000000000,00
0,00
10905080000000000000,00
10704020000000000000,00
0,00
E se coloco " ", no método replace(), ele ele lança a mesma exceção anterior:
Exception in thread “main” java.lang.NumberFormatException: empty String
at sun.misc.FloatingDecimal.readJavaFormatString(Unknown Source)
at sun.misc.FloatingDecimal.parseDouble(Unknown Source)
at java.lang.Double.parseDouble(Unknown Source)
at ConverterDeStringParaDouble.main(ConverterDeStringParaDouble.java:12)
Enfim, não sei como tratar esse erro! Já me disseram para usar BigDecimal
, mas tentei e apresenta o mesmo erro… Sei que talvez seja algo bobo, mas não sei o que fazer…
Alguém pode me ajudar? Desde já, muito obrigada!
Código completo que usei como exemplo:
public class ConverterDeStringParaDouble{
public static void main(String[] args){
String[] multasContratuais = {"", "2368000000",
"2153000000.00","1989000000.00", "",
"1958000000.00","1742000000.00", ""};
String[] vetorAuxiliar = new String[multasContratuais.length];
Double[] multas = new Double[multasContratuais.length];
for(int i = 0; i < multasContratuais.length; i++){
vetorAuxiliar[i] = multasContratuais[i].replace(" ", "0");
multas[i] = Double.parseDouble(vetorAuxiliar[i]);
System.out.printf("%.2f\n", multas[i]);
}
}
}