Duvida com String.format [RESOLVIDO]

Galera da um help aquew pq a bronca ta grande!!!

A Katy Sierra no use a cabeça da alguns exemplos…

Era pra saida ser 10.000…a primeira linha de codigo seria a correta!!
Mas ela nao roda!!Consegui o resultado depois de muito mecher e colocar uma virgula no lugar do ponto…

String y = String.format("%.d",10000);

String x = String.format("%,d",10000);

E tem esse outro exemplo que nao funciona…

String z = String.format("%,2f",10000,1250f);

E nem pensar esse outro

String w = String.format("%.,2f",10000,1250f);

O que ta acontecendo???Alguem me ajuda aew…,esse assunto eh muitooo chato e sem conseguir fazer fica muito pior 8(

É uma vírgula mesmo, acho que no livro é que foi impresso errado.

Are you running your program in a Brazilian Portuguese Windows machine?

If you run this code:

String y = String.format("%,d",10000); 

y receives “10,000” in a English Windows and “10.000” in a Brazilian Portuguese Windows machine.

It’s because the “,” format modifier (that’s not present in the C printf original version) uses the thousands-separator symbol according to the locale ("," if the locale is English, “.” if the locale is Brazilian Portuguese).

Are you using the original book or the Portuguese translation?

Tou usando a tradução brasileira…eu conversei com prof na faculdade e ele falou que isso acontece por causa de configurações de " . " e de “,” do sistema operacional,e juntando com o que o colega falou acima faz sentido…

Alguem aew sabe como eu mudo essa configuração??

Well, String.format has an additional parameter:

http://download.oracle.com/javase/6/docs/api/java/lang/String.html#format(java.util.Locale,%20java.lang.String,%20java.lang.Object...)

For example:

import java.util.Locale;

class TesteStringFormatLocale {
    public static void main (String[] args) {
        int x = 10000;
        Locale brasil = new Locale ("pt", "BR");
        System.out.println (String.format (brasil, "%,d", x)); // prints 10.000
        System.out.println (String.format (Locale.US, "%,d", x)); // prints 10,000
        double y = 1234567.890123;
        System.out.println (String.format (brasil, "%,.6f", y)); // prints 1.234.567,890123
        System.out.println (String.format (Locale.US, "%,.6f", y)); // prints 1,234,567.890123
    }
}

Porque voce fala em ingles?

Mas de qualquer forma a sintaxe do Use a cabeça ta errada…
Ele indica dessa forma String.format("%.d",1000),
e de qualquer forma mesmo setando o locale para pt br,voce continua usando String.format("%,d"),a unica coisa que muda
setando o valor de locale é que quando imprimir o valor ele usara virgulas ao invez de pontos e vice-versa…

Meu computador usa o padrao americano(E-Bay =P),tem alguma relação a sintaxe do livro traduzido nao rodar?
Ou a sintaxe é independente do SO,a unica coisa que muda seria o relatorio???

Tio, a tradução está errada. É claro que tem de ser “%,d” (com uma vírgula), não “%.d”.
Livros podem estar errados, e traduções costumam estar mais erradas ainda. OK?

Nao tenho nada contra o ingles…ate entendo um pouco!!
Mas chamar de tio eh fuckz :stuck_out_tongue:

Ahhhh muito obrigado pela explicação da classe locale!!
Muito boa!!

Mas tio é fuckz :stuck_out_tongue_winking_eye: