Dúvida especifica sobre try catch e do while

2 respostas
java
G

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;

}

}

2 Respostas

siabreu

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

B
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;
  }
}
Criado 1 de novembro de 2017
Ultima resposta 8 de nov. de 2017
Respostas 2
Participantes 3