Formatação de Números - Dúvida(Resolvida...!, Obrigado!)

8 respostas
glaucioaorj

Bom dia a todos... :) , estou estudando o livro "Java, Use a cabeça" e estou tentando "rodar" o exemplo da página 212 , a saber :

public class TestFormats {

	public static void main(String[] args) {

		String s = String.format("%.d", 1000);

		System.out.println(s);

	}

}

O "Eclipse" Apresenta o(s) seguinte(s) erro(s):

at java.util.Formatter.checkText(Unknown Source)
	at java.util.Formatter.parse(Unknown Source)
	at java.util.Formatter.format(Unknown Source)
	at java.util.Formatter.format(Unknown Source)
	at java.lang.String.format(Unknown Source)
	at TestFormats.main(TestFormats.java:5)

Alguém poderia me ajudar / orientar...????? :roll:

Abs!

8 Respostas

Frantic_Avenger

Bom aqui funcionou tirando o ponto de "%.d"

Testa aí:

public class TestFormats {   
  
    public static void main(String[] args) {   
  
        String s = String.format("%d", 1000);   
  
        System.out.println(s);   
  
    }   
  
}
Scoobydoo

¬¬ … é bem isso mesmo

glaucioaorj

No argumento “%.d”, retirei o “ponto” conforme sugerido porém, não aconteceu o resultado esperado, ou seja, o número “1000” deveria aparecer “1.000”. A página 212 do livro “Java, Use a cabeça” fornece esse exemplo na seguinte explicação : “Formatando um número para que use pontos”… eu ainda continuo sem entender porque o programa não está “rodando” e… :?

Scoobydoo

tente colocar uma virgula, mas com o D maiusculo

mario.fts

Na verdade não é um ponto, o que deveria estar ali é uma virgula.

public class TestFormats {     
     
     public static void main(String[] args) {     
     
         String s = String.format("%,d", 1000);     
     
         System.out.println(s);     
    
     }     
     
 }

resultado: 1.000

Frantic_Avenger
mario.fts:
Na verdade não é um ponto, o que deveria estar ali é uma virgula.
public class TestFormats {     
     
     public static void main(String[] args) {     
     
         String s = String.format("%,d", 1000);     
     
         System.out.println(s);     
    
     }     
     
 }

resultado: 1.000

Não sabia que o resultado esperado era -> 1.000

Mas de qualquer formar você tá certo mario.fts executei em minha máquina e com esse código que você postou é gerado esse resultado.

glaucioaorj

Valew galera… :slight_smile: !!! No livro “Java, use a cabeça” no lugar da vírgula existe erradamente um “ponto” … :wink: …valeu pela dica!!!

Abs a todos…! :slight_smile:

mario.fts

Na verdade o resultado é esse por causa do Locale.

o Format da String
tem uma versão do método que recebe um Locale também, podendo mudar o resultado.

A virgula nesse caso é só pra informar o formatter a usar os separadores decimais do Locale definido. Fica na parte de “Flags”, na documentação do Formatter.

No doc da classe Formatter tem os simbolos válidos, é meio (sendo bem bondoso) bagunçado, mas fica a dica pra quem estiver precisando.

[]'s

Criado 1 de fevereiro de 2010
Ultima resposta 1 de fev. de 2010
Respostas 8
Participantes 4