Erro do livro Use a Cabeça! Java?

7 respostas
DoomGuy

No livro, há um código de teste para fazer a formatação de valores. No livro, o código esta assim:

public class TestBox {
	public static void main(String[] args) {
		
			
		String s = String.format("Tenho %.,2f problemas pra corrigir até ", 14567,3466;);
		System.out.println(s);
	}

}

pooooorém.

Ao executar no eclipse aqui de casa, ocorre o seguinte erro:(Não estou considerando outro, como o da vírgula no número que não faz o código compilar):

Exception in thread "main" java.util.UnknownFormatConversionException: Conversion = '.'
at java.util.Formatter.checkText(Formatter.java:2519)
at java.util.Formatter.parse(Formatter.java:2501)
at java.util.Formatter.format(Formatter.java:2430)
at java.util.Formatter.format(Formatter.java:2383)
at java.lang.String.format(String.java:2781)
at TestBox.main(TestBox.java:8)

MAAAAS

funciona quando eu troco as posição do "." e da ",", e faço mais algumas alterações:

public class TestBox {
	public static void main(String[] args) {
		
		double  i = 14567.3466;
	
		String s = String.format("Tenho %.,2f problemas pra corrigir até ", i);
		System.out.println(s);
	}

}

Então, o livro, o pc daqui de casa ou EU estou errado?

Quem puder ajudar, fico agradecido desde já.

7 Respostas

fernandosavio

http://download.oracle.com/javase/1,5.0/docs/api/java/util/Formatter.html#syntax

Danillo_Moreno

Aqui funcionou assi:

public class TestBox {
    public static void main(String[] args) {
        String s = String.format("Tenho %,2f problemas pra corrigir até ", 14567.3466); 
        System.out.println(s); 
        }
}

Abraço…

DoomGuy

Então, comigo funcionou dessa forma tbm. Porém, o livro ensina de outra forma, que não funciona. Então… isso é causa de versóes desatualizadas… alguém sabe informar?? Deveria ter sido importada alguma classe, ou sei lá, algum outro motivo?

Obrigado.

E

DoomGuy:
Então, comigo funcionou dessa forma tbm. Porém, o livro ensina de outra forma, que não funciona. Então… isso é causa de versóes desatualizadas… alguém sabe informar?? Deveria ter sido importada alguma classe, ou sei lá, algum outro motivo?

Obrigado.

Já ouviu falar de “erro de tradução”? Tradutores sabem bem inglês, mas normalmente não têm tempo de recompilar os programas e ver se funcionam. Eles têm de entregar o serviço em alguns dias e não dá tempo para fazer isso (instalar o Java e checar se cada programa traduzido funciona).

Danillo_Moreno

Só por curiosidade me diga em que página do livro está o erro…

E a versão do livro também…

Tenho esse livro em casa, vou ver se acho onde ele está guardado e ver se o erro existe no meu livro…

R

É porque o padrão inglês se escreve assim String s = String.format ("%. d", [telefone removido]);
saída: 1.000.000.000

Já em português o padrão é assim String s = String.format ("%, d", [telefone removido]);
saída: 1.000.000.000

Eu sou novo aqui no fórum e ainda não conheço a didática de vocês para transferir conhecimento mas façam o teste, no inglês eles usam o ponto e no português a virgula.

Para numero de ponto flutuante escreve assim em português, no inglês no lugar desse ponto ele poe uma virgula.
String s = String.format("%.2f" ,1.000000000);
saída: 1,00

mi.rodrigues
Seu código:
public class TestBox {  
    public static void main(String[] args) {  
          
              
        String s = String.format("Tenho %.,2f problemas pra corrigir até ", 14567,3466;);  
        System.out.println(s);  
    }  
  
}

Código correto:

public class TestBox {  
    public static void main(String[] args) {  
          
              
        String s = String.format("Tenho %,2f problemas pra corrigir até ", 14567.3466);  
        System.out.println(s);  
    }  
  
}

OBS.:
*Existia um ';' 3466 que dá um erro de compilação
*Retire o '.' após a porcentagem

Criado 4 de setembro de 2011
Ultima resposta 25 de mar. de 2013
Respostas 7
Participantes 6