GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

[RESOLVIDO] Como tratar os dados em branco de um vetor?

java
arraylist
vetor
list
null
Tags: #<Tag:0x00007f85458f03c8> #<Tag:0x00007f85458e5d10> #<Tag:0x00007f85458d2c88> #<Tag:0x00007f854589e708> #<Tag:0x00007f8545886e00>

#1

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… :disappointed_relieved:

Alguém pode me ajudar? Desde já, muito obrigada! :sweat_smile:

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]);
		}
	}
}

#2

Pelo que eu entendi você quer que os “” nao apareçam na saida. Caso seja isso, o meu conselho é usar um if para verificar se a string está vazia


#3

Não era bem o que eu queria, mas sua sugestão me deu uma ideia… rsrs… É que estou usando esses valores associados a um ArrayList. Eu precisava exibir os nomes de quem recebe as multas mais altas. Nesse caso, a saída não é muito importante, mas como precisava dos valores do vetor para usar no Comparator<>, ele não poderia estar com itens em branco…

Agora deu certo… Obrigada! :blush: :grinning: :sweat_smile: