user17545832
user17545832

Reputation:

how to use a do-while loop in a class?

how would I create a do-while loop to verify that the user input contains no special characters. If it does contain special characters, how would I make it restart the loop? In my loop, it still returns the name if it has special characters.

Here is my main:

import java.util.Scanner;


public class Main {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        UserInterface user = new UserInterface();

        System.out.print("Enter first and last name: ");
        String userName = input.nextLine();
        user.setName(userName); 
        user.getName(); 
    }           
}

Here is my User class:

import java.util.Random;

public class UserInterface {
    
    Random random = new Random();
    private String name;

    public String getName() {
        String specialCharacters = "!#$%&'()*+,-./:;<=>?@[]^_`{|}123456789";
        boolean invalidInput = false;

        do {
            invalidInput = false;
            System.out.print("User: " + name + " ID #" + getUserID());
        } while(name.contains(specialCharacters));
        invalidInput = false;
        return name;
            
    }

    public void setName(String userName) {
        this.name = userName;
    }

    public int getUserID() {
        return random.nextInt(1000);
    }
}

Upvotes: 0

Views: 68

Answers (1)

user8234870
user8234870

Reputation:

use do while loop to verify weather the user name is valid or not.

For validating use:

 public static boolean isValidName(String name){
                for(char ch : name.toCharArray())
                        if(!Character.isLetterOrDigit(ch))
                                return false;
                return name.length() != 0;

        }

For getting name:

 public static String inputName() {
                boolean invalidInput = false;
                Scanner scan = new Scanner(System.in);
                String name = null;

                do {
                        System.out.print("Enter Name : ");
                        name = scan.nextLine();
                        //System.out.println("name " +name);
                        //System.out.print("User: " + name + " ID #" + getUserID());
                } while(!isValidName(name));
                return name;

        }

Main.java

import java.util.Random;
import java.util.Scanner;

class UserInterface {

        Random random = new Random();
        private String name;

        public void setName(String userName) {
                this.name = userName;
        }
        public String getName(){
                return name;
        }

        public int getUserID() {
                return random.nextInt(1000);
        }
}


public class Main {
        public static String inputName() {
                boolean invalidInput = false;
                Scanner scan = new Scanner(System.in);
                String name = null;

                do {
                        System.out.print("Enter Name : ");
                        name = scan.nextLine();
                        //System.out.println("name " +name);
                        //System.out.print("User: " + name + " ID #" + getUserID());
                } while(!isValidName(name));
                return name;

        }
        public static boolean isValidName(String name){
                for(char ch : name.toCharArray())
                        if(!Character.isLetterOrDigit(ch))
                                return false;
                return name.length() != 0;

        }
        public static void main(String[] args) {
                Scanner input = new Scanner(System.in);
                UserInterface user = new UserInterface();
                user.setName(inputName());
                System.out.println(user.getName());
        }
}

Output:

$ javac Main.java  && java Main
Enter Name : Dev Par
Enter Name : DevPar
DevPar

Upvotes: 1

Related Questions