Article image
EDUARDO JUNIOR
EDUARDO JUNIOR15/08/2025 16:38
Compartilhe

Como assim não funciona???

    Se voce ja se deparou este erro em java :

     image

    Provavelmente voce esqueceu do metodo "Locale.SetDefault(Locale.US)"

    Por que isso acontece?

     A nossa maquina virtual ou JVM, vem de padrão no formato Americano ou seja, ao invés

    deles usarem "," o que é comum no formato "BR", para eles o "." é o separador decimal.

    Então como resolver?

    Vamos usar um código em java para exemplificar melhor :

    image

    Aqui nós temos um código que mostra o IMC (Índice de massa corporal) onde,

    o usuário coloca seu nome, idade, peso e altura.

    É feita uma verificação simples com if/else para

    saber se a pessoa está abaixo, normal, acima ou obeso.

    (OBS. Não reparem no meu (sobre peso), foque no código!!)

    A solução para voce não ver mais este erro chato que apareceu logo no começo deste 

    texto rsrs, é não esquecer de colocar o método "Locale.setDefault(Locale.US) "

    desta forma, o erro sera corrigido e a vida sera feliz outra vês !!!

    DICA !!!

    Caso voce necessite do "Locale" somente no Scanner, faça desta forma :

    image

    "Scanner sc = new Scanner(System.in).useLocale(Locale.US)" 

    Assim o Locale funcionara somente no que estiver no Scanner !!

    Até proxima Dica !!!!

    Compartilhe
    Comentários (2)
    EDUARDO JUNIOR
    EDUARDO JUNIOR - 18/08/2025 14:14

    Para iniciantes ou projetos pequenos o melhor a se fazer é, usar o (Locale.setDefault) localmente, por que?

    Mudar o Locale global afeta toda JVM , incluindo formataçao de numeros, datas e moedas em outras partes do programa.

    Se a pessoa esta começando agora e nao entender isso, ela pode causar um "bug" que pode ser dificil de rastrear!

    Um exeplo disso é o (NumberFormat) passando a usar ponto decimal quando nao era esperado!


    DIO Community
    DIO Community - 18/08/2025 09:10

    Eduardo, seu artigo sobre o uso do Locale em Java é muito prático! A explicação de por que a JVM pode interpretar o separador decimal de forma diferente ajuda muito quem já se frustrou com erros de leitura de números.

    O destaque que você deu para a solução direta, usando Locale.setDefault(Locale.US) ou aplicando o useLocale(Locale.US) no próprio Scanner, mostra uma ótima prática de adaptação sem alterar o restante do programa. Isso é um bom exemplo de como pequenas configurações podem evitar bugs sutis que confundem iniciantes.

    Na DIO, ensinamos justamente a atenção a detalhes como esse, porque dominar o comportamento da JVM e lidar com formatos regionais é essencial para criar aplicações robustas.

    Para você, qual abordagem é mais prática para iniciantes: mudar o Locale global da JVM ou aplicar localmente no Scanner?