Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Uso da vírgula para valores decimais.

No Brasil é utilizado a vírgula para indicar os números decimais. Porém o Java reconhece apenas o ponto para esse propósito. Porém se eu programo algo solicitando um valor como no exercício da média dos familiares (var gasto = parseFloat(prompt("Informe total gasto com evento"));) e o usuário digitar um valor com , ele vai ignorar a parte decimal. Como posso indicar para o Java aceitar a vírgula?

5 respostas

Em java é pelo padrão inglês, porém tem como mudar isto através de charset e encoding. Existe um curso no alura que explica muito bem isto.

https://cursos.alura.com.br/course/java-trabalhando-com-io

De inicio você poderá utilizar a logica mesmo para fazer este procedimento.

Se caso a entrada do user for com virgula, ele não irá perceber e irá mudar a virgula para o ponto.

        System.out.println("Digite o valor do boleto");
        Scanner entrada = new Scanner(System.in);
        String valor = entrada.next();

        if (!valor.matches(".*[a-z].*")) {
            if (valor.contains(",")) {
                valor = valor.replace(",", ".");
                float valorDecimal = Float.parseFloat(valor);
                System.out.println(valorDecimal);
            }
        } else {
            System.out.println("Somente digite numeros");
        }

No caso se for diferente de a-z o que o user digitar ele verifica se contém virgula, se contém ele troca para . e faz a conversão para float, se caso já não tiver a virgula ele simplesmente não troca nada. Saida do console será assim -> Digite o valor do boleto 10,52 10.52 ( Este somente imprimi o resultado final para lhe mostrar).

Eu agradeço o retorno Eduardo. Porém ainda sou bem iniciante no mundo da programação. Eu não consegui adaptar o código que você me mandou de exemplo no meu programa. Você poderia me ajudar a entender como funciona essa condição contains e replace dentro do meu exemplo de programa?

    var totalDeEventos = parseInt(prompt("Informe o total de eventos"));
    var contador = 1;
    var totalGastoComEventos = 0;

    while(contador <= totalDeEventos) {

        var gasto = parseFloat(prompt("Informe total gasto com evento"));
            totalGastoComEventos = totalGastoComEventos + gasto;
            contador++;

    }

    var media = (totalGastoComEventos / totalDeEventos).toFixed(2);

    mostra("A média de gastos é " + media);

</script>
if (gasto.includes(","){
var gastoConvertido = gasto.replace(",","." );

//após isso converte para float. Teste ai e depois me avisa, não cnheco muito de java script

O includes verifica se tem aquele caracter ( mesma coisa que em Java o contains) e o replace, ele subistitui um por outro.

Não deu certo, está indicando que o includes não é uma função. Tentei usar apenas o replace como eu vi nesse site https://www.devmedia.com.br/javascript-replace-substituindo-valores-em-uma-string/39176 , mas tbm não funcionou. Vou continuar pesquisando. De qualquer forma obrigada.

solução!

Oi pessoal tudo bem ?

Eu fiz o código para você Jhemili.

<script>

function mostra(string){

    document.write(string);
}
var totalDeEventos = parseInt(prompt("Informe o total de eventos"));
var contador = 1;
var totalGastoComEventos = 0;

while(contador <= totalDeEventos) {

    var gasto = parseFloat(prompt("Informe total gasto com evento").replace(',','.'));
        totalGastoComEventos = totalGastoComEventos + gasto;
        contador++;

}

var media = (totalGastoComEventos / totalDeEventos).toFixed(2);

mostra("A média de gastos é " + media);

</script>

Espero ter ajudado!!!