Проверьте, что введенная переменная user является строкой или нет в Java : setter

#java

Вопрос:

Я практиковал сеттер и геттер на Java. Я подумал, что, если мой код выдаст ошибку, если пользователь неверно указал имя сотрудника, т. Е. «123» или «@qre23», которое не может быть чьим-то настоящим именем .Вот мой код, подскажите, что мне обновить ?

 class MyEmployee {

    private int id;
    private String name;

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

    public void getName(){
        System.out.println("n Your Employee Name is : "   this.name);
    }


}


public class Main {

    public static void main(String[] args) {

        MyEmployee myEmployee = new MyEmployee();
        myEmployee.setName("209");
        myEmployee.getName();

    }
}
 

Комментарии:

1. Просто используйте обычный шаблон регулярных выражений для проверки ваших входных данных

2. проверьте класс шаблона java. он отвечает за обработку операций с регулярными выражениями baeldung.com/regular-expressions-java

3. Не могли бы вы закодировать его, пожалуйста ?

4. Могу я предположить, что имена гораздо сложнее, чем вы, кажется, думаете. Не забывайте, когда Принц изменил свое имя (официально) на непроизносимый символ.

Ответ №1:

Сопоставьте строку с регулярным выражением, используя matches()

  public void setName(String name){
        if(name.matches("^[a-zA-Z ]*$"))
          this.name = name;
        else
          //throw error
    }
 

Комментарии:

1. В этом случае, пока я это делаю —>>> « myEmployee.setName(«Арпит Яна»); « он показывает null

2. В противном случае без пространства он работает хорошо.

3. Попробуй сейчас. Я добавил пробел в выражение регулярного выражения

4. Я бы не стал фильтровать имена.

5. А что, если в названии есть китайские иероглифы?

Ответ №2:

Вы можете сделать это по-разному, в зависимости от того, какое регулярное выражение вы хотите, но это один из способов сделать это. Также убедитесь, что ваш получатель возвращает имя. Прямо сейчас ваш получатель не возвращает имя.

 class MyEmployee {

    private int id;
    private String name;

    public void setName(String name){
        String regx = "^[\p{L} .'-] $";
        boolean match = Pattern.matches(regx, name);
        if(match){
            this.name = name;
        }
    }

    public String getName(){
        System.out.println("n Your Employee Name is : "   this.name);
        return this.name;
    }
}