Dúvida especifica sobre try catch e do while

No programa, gostaria que sempre que o usuário inserir letras em this.setNumeroConta(sc.nextInt()); fosse informado que deve ser somente números e entrar em uma repetição. A mesma coisa se aplica quando for inserido números em this.setDono(sc.nextLine());, deve ser somente letras.

Obrigado pela atenção!

import java.util.InputMismatchException;
import java.util.Scanner;

public class teste {
Scanner sc = new Scanner(System.in);

public int numeroConta;

public String dono;

public void inicioEscolhaCriar() {
numero();
usuario();
}

public void numero() {
do {
try {
System.out.println("Digite o número da conta: ");
this.setNumeroConta(sc.nextInt());
sc.nextLine();
if (this.getNumeroConta() >= 0) {
System.out.println(“SUCESSO_NA_OPERÇÃO NUMERO_DA_CONTA”);
}
} catch (InputMismatchException exeption) {
System.out.println(“Somente números”);
}
} while (this.getNumeroConta()==?);
}

public void usuario() {
do {
try {
System.out.println("Digite o nome de usuário: ");
this.setDono(sc.nextLine());
if (this.getDono() != null) {
System.out.println(“SUCESSO_NA_OPERÇÃO NOME_DO_USUARIO”);
}
} catch (InputMismatchException exeption) {
System.out.println(“Somente letras”);
}
}while(this.getDono()==?);

}

public int getNumeroConta() {
return numeroConta;
}

public void setNumeroConta(int numeroConta) {
this.numeroConta = numeroConta;
}

public String getDono() {
return dono;
}

public void setDono(String dono) {
this.dono = dono;
}
}

Olá Guilherme, você deve tratar cada entrada de dados separadamente no try…catch… assim pode dar mensagens específicas de erro e o usuário terá que entrar um valor por vez. Para solicitar novamente o número da conta, utilize um do…while, para cada entrada, com um boolean que irá validar a entrada de dados. Segue um exemplo funcional:

        Scanner sc = new Scanner(System.in);
        boolean valido = true;
        int nConta;
        do{
            try{
                System.out.println("Digite o numero da conta: ");
                nConta = sc.nextInt();
                System.out.println("Numero da conta: " + nConta);
                valido = true;
            }catch(InputMismatchException e){
                System.out.println("Você deve digitar um número inteiro!!");
                sc.nextLine(); 
                valido = false;
            }
        }while(!valido);

Espero ter ajudado!

SiAbreu Tec - https://www.youtube.com/channel/UCIVeHmX8CFh6qSLXAsPODbw

Pattern p = Pattern.compile("^[0-9]+$");

Scanner sc = new Scanner(System.in);

boolean vaido = true;

while(!valido){
  System.out.println("Digite o numero da conta: ");
  String numero = sc.nextLine();

  if(!p.matcher(numero).matches()){
     valido = false;
  }
}