Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

erro no sout final que diz os valores em dolar e reais

Scanner leitura = new Scanner(System.in);
        System.out.println("Qual o valor em reais que deseja converter para dólares?");
        double valorReais = leitura.nextDouble();
        double taxaCambio = 5.25;
        double valorDolares = valorReais/taxaCambio;

        System.out.println("O valor: R$" + valorReais + " em dólares é: " + valorDolares);

dá o erro: Exception in thread "main" java.util.InputMismatchException at java.base/java.util.Scanner.throwFor(Scanner.java:947) at java.base/java.util.Scanner.next(Scanner.java:1602) at java.base/java.util.Scanner.nextDouble(Scanner.java:2573) at Principal2.main(Principal2.java:95) quando uso um valor decimal em reais mas se uso um valor inteiro, como 156, o seguinte é o resultado:

Qual o valor em reais que deseja converter para dólares? 156 O valor: R$156.0 em dólares é: 29.714285714285715

O que está errado?

1 resposta
solução!

Olá Laura,

O erro que você está enfrentando ao digitar um valor decimal ocorre por causa do separador decimal usado. O Scanner.nextDouble() espera, por padrão, valores decimais com ponto (.) como separador — por exemplo: 156.50. Se você digitar 156,50 (com vírgula, como é o padrão brasileiro), o Scanner não reconhece como um número válido e lança a exceção: Exception in thread "main" java.util.InputMismatchException.

Pensei em duas opções para resolver o seu problema:

1 - Usar locale para compreender a vírgula como separador decimal:

scanner leitura = new Scanner(System.in).useLocale(Locale.forLanguageTag("pt-BR"));

2 - Ler como se fosse um String, e fazer o parse substituindo a vírgula pelo ponto:

        String entrada = leitura.nextLine().replace(",", ".");
        double valorReais = Double.parseDouble(entrada);

Espero ter ajudado.