Reputation:
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
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;
}
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());
}
}
$ javac Main.java && java Main
Enter Name : Dev Par
Enter Name : DevPar
DevPar
Upvotes: 1