Oi, estou criando um programa para receber a altura de um grupo de pessoas.
Mas, ao digitar a altura usando (.) ponto ao invés de (,) virgula dá o seguinte erro:
Exception in thread “main” java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:864)
at java.util.Scanner.next(Scanner.java:1485)
at java.util.Scanner.nextDouble(Scanner.java:2413)
at primeiroprograma.p_AlturaSexo.main(p_AlturaSexo.java:15)
C:\Users\User\AppData\Local\NetBeans\Cache\8.2\executor-snippets\run.xml:53: Java returned: 1
FALHA NA CONSTRUÇÃO (tempo total: 7 segundos)
Não deveria ser o contrário?
E quando digito, por exemplo, “1,60” o programa retorna “1,6” excluindo o 0.
Alguma dica que pode me ajudar na resolução deste problema?
Melhorando um pouco a explicação do nobre colega, você pode fazer o seguinte:
Antes da declaração de qualquer código você coloca: Locale.setDefault(Locale.US);
Isso fará com quer a sua máquina entenda que você quer utilizar notação americana como ponto de separação de unidades de moeda. Agora pode digitar sem medo com o ponto.
public static void main(String[] args) {
Locale.setDefault(Locale.US); // Para utilizar formato de PONTO
Scanner sc = new Scanner(System.in); // Capturar entrada de dados no teclado
System.out.println("Informe a altura:"); // Solicita altura
double altura = Double.parseDouble(sc.next()); // Converte para double o que foi digitado
System.out.printf("Altura é %.2f%n", altura); // Imprime na tela o que foi digitado com duas casas decimais.
System.out.println("Forte abraço, espero que te ajude!");
sc.close(); limpa o sc para não ficar em excursão.
}