Como fazer um tratamento correto de valores int e float digitados pelo usuário em código JAVA?

Estou querendo fazer um tratamento correto de valores int e float digitados pelo usuário, as variáveis para tratamento são:

p1.setIdade(teclado.nextInt());
p1.setAltura(teclado.nextFloat());
p1.setDinheiro(teclado.nextDinheiro());
package teste2;
import java.text.NumberFormat;
import java.util.Locale;
import java.util.Scanner;

public class Teste2 {
    public static void main(String() args) {
        Locale localBR = new Locale("pt","BR");
        NumberFormat dinheiro = NumberFormat.getCurrencyInstance(localBR);
        Pessoa p1 = new Pessoa();
        
        try (Scanner teclado = new Scanner(System.in)) {
            System.out.print("Digite o seu nome: ");
            p1.setNome(teclado.nextLine());
            System.out.print("Digite a sua idade: ");
            p1.setIdade(teclado.nextInt());
            System.out.print("Digite a sua altura: ");
            p1.setAltura(teclado.nextFloat());
            System.out.print("Digite o valor que você tem sua carteira: ");
            p1.setDinheiro(teclado.nextFloat());
            System.out.println("");
            teclado.close();
            
            System.out.println("Nome: " + p1.getNome());
            System.out.println("Idade: " + p1.getIdade());
            System.out.println("Altura: " + p1.getAltura());
            System.out.println("Dinheiro: " + dinheiro.format(p1.getDinheiro()));
        }
    }  
}