Problemas com virgula e ponto e 0

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?

Simples: o Scanner utiliza como padrão o Locale padrão da máquina, por isso ele não aceita o valor com ponto.

Tente isso após instanciar o Scanner:

input.useLocale(Locale.ENGLISH);

Referência

1 curtida

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.

Exempo:

package projetosJava;

import java.util.Locale;
import java.util.Scanner;

/**

  • @author Carlos Vasconcelos

*/
public class exemploAltura {

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.
}

}

1 curtida