Verificar se o que o usuário digitou no Scanner é apenas número

Olá, pessoal! Tudo bem?

Sou iniciante em Java e escrevi um programa bem simples para verificar o que o usuário digitou, utilizando o Scanner e me dizer se o usuário é maior ou menor de idade.

Gostaria de saber como eu faço para colocar uma “trava” e não deixar o usuário digitar letra quando for informar a idade e não deixar digitar números quando for informar o nome.

Atualmente, meu programa está assim:

public static void main(String[] args) {
	
	//Programa simples para verificar se uma pessoa é maior ou menor de idade
	
	//Variáveis
	int idadeDoUsuario;
	String nomeDoUsuario;
	
	Scanner sc = new Scanner(System.in);
	
	System.out.println("Qual o seu nome? ");
	nomeDoUsuario = sc.nextLine();
	
	System.out.println("Qual a sua idade? ");
	idadeDoUsuario = sc.nextInt();
	
	if(idadeDoUsuario <= 17) {
		System.out.println(nomeDoUsuario + ", você é menor de idade!");
	} else {
		System.out.println(nomeDoUsuario + ", você é maior de idade!");
	}
	
	sc.close();
}

}

Obrigado, pessoal!

Talvez essa minha classe atenda a sua necessidade.

Bastaria fazer:

public static void main(String[] args) {
	
	//Programa simples para verificar se uma pessoa é maior ou menor de idade
	
	String nomeDoUsuario = StdIO.readString("Qual o seu nome? ");
	
	int idadeDoUsuario = StdIO.readInt("Qual sua idade? ");
	
	if(idadeDoUsuario <= 17) {
		StdIO.println(nomeDoUsuario + ", você é menor de idade!");
	} else {
		StdIO.println(nomeDoUsuario + ", você é maior de idade!");
	}
1 curtida

Olá!

Funcionou perfeitamente, mas eu precisei importar a sua classe para o meu projeto.

Teria alguma forma de fazer isso utilizando as classes nativas do Java?

Obrigado!

1 curtida

Sim, é só olhar como implementei cada método do StdIO, eles só usam classes nativas.