Проверка строки в Java - PullRequest
       0

Проверка строки в Java

1 голос
/ 26 октября 2010

У меня есть вопрос о проверке в Java, я смотрел предыдущую тему, и ни одна из них не отвечает на мою маленькую проблему.

То, что я пытаюсь сделать, это проверить, что помещается в строковую переменную в конструкторе, а также когда используется метод set.

Что мне нужно, так это если введен Mr Miss Mrs или Ms, затем установить это значение в переменной (title), если нет, затем установить title как '' Not set '' и напечатать ошибку, теперь я знаю, как последняя часть, это проверка того, что пользователь вводит в переменную, в которой я застрял ... Я попытался использовать массив, но не смог заставить его работать и попробовал операторы if, опять не смог получить его функционировать

Ответы [ 5 ]

4 голосов
/ 26 октября 2010
public void setTitle(final String title)
{
  if (title.matches("^Mrs|Mr|Miss|Ms$"))
  {
    this.title = title;
  }
  else
  {
    this.title = "Not Set";
    System.err.format("%s is not a valid title, expecting Mrs,Mr,Miss,Ms\n", title);
  }
}

если вы хотите сделать регистр нечувствительным, то измените регулярное выражение на:

"(?i)^Mrs|Mr|Miss|Ms$"

, тогда вы можете просто прописать всю строчку и заглавную только первую букву, чтобы повторно нормализовать вводчто вы действительно хотите.Google для "правильного случая java", чтобы найти некоторые заранее написанные фрагменты кода.

Более краткий вкладыш, опять-таки чувствительный к регистру:

public void setTitle(final String title)
{
  title.matches("^Mrs|Mr|Miss|Ms$")) ? this.title= title: this.title= "Not Set";
}
0 голосов
/ 26 октября 2010

Создайте набор слов, которые вас интересуют (используйте их заглавные буквы), а затем проверьте, попадает ли заголовок в набор:

Set allowedTitles = new HashSet();
allowedTitles.add("MR");
allowedTitles.add("MRS");
allowedTitles.add("MS");
allowedTitles.add("MISS");
if (! allowedTitles.contains(textBoxTitle.getText().trim().toUpperCase()) {
   //print exception
}
else { title = textBoxTitle.getText().trim());
0 голосов
/ 26 октября 2010

Я уверен, что ты сделал что-то вроде -


   if(title =="Mr."){ blah.. } // this will check the address</p>

<p>do this instead ..</p>

<p>if(title.equals("Mr."){blah..}  // this will check the values..
    
0 голосов
/ 26 октября 2010

почему бы просто не вызвать небольшой метод, который выполняет проверку и затем устанавливает значение?

private void validateString(String) {

if string is valid 
 call setter
}
0 голосов
/ 26 октября 2010

Используйте это

    String title = textBoxTitle.getText();
    if(!title.equals("Mr") && !title.equals("Miss") && !title.equals("Mrs") && !title.equals("Ms"))
    {
        // Text is invalid
    }
    else
    {
        // Text is valid
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...