So I’m trying to do an input verification for my program in java, and I’m trying to do that in this setter:
public void setClientName(String clientName) { boolean valid; do{ valid = false; try{ if(clientName.matches("[a-zA-Z]+")){ this.clientName = clientName; }else{ throw new IllegalArgumentException("Invalid client name"); } }catch(Exception e){ System.out.println("Invalid name"); valid = true; } }while(!valid); }
But when I call it and put a wrong name, the do…while does not work and the program just continue
Here’s where I call it
public void openAccount(int i){ nCartao = 2021120040 + i; System.out.println("Account Number : " + (nCartao)); System.out.println("Client Name :"); setClientName(sc.next()); // I CALL IT HERE System.out.println("Client Age : "); age = sc.nextInt(); System.out.println("Balance :"); balance = sc.nextInt(); }
What am I doing wrong?
Advertisement
Answer
Maybe that’s because in your catch you are stating that valid
is true
when it should be false
to repeat the block.