2012-05-15 2 views
0

Что я хотел бы сделать:ограничения пользовательского ввода + цикл

  • не ограничивает ввод данных пользователя для букв только (строчных и колпачков)
  • сообщения об ошибке на неправильном вводе
  • петля до правильного ввода

Довольно много сайтов с похожими вопросами предложили регулярные выражения, шаблоны и сопоставления. Я смотрел API, и это меня очень смутило ...

Вот что я пробовал.

public class restrictinput { 
    public static void main (String args []) { 
     Scanner sc = new Scanner (in); 
     System.out.println ("Enter blah "); 
     String blah = sc.nextLine(); 
     Pattern userInput = Pattern.compile("^[a-zA-Z]+$"); 
     Matcher inputCheck = userInput.matcher("blah"); 
    } 
} 

Это компилируется, но я не уверен, что это правильный/лучший способ сделать это. Но, если я введу другой тип символа, он просто выполняет остальную часть кода.

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

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

+0

Возможно, вы имеете в виду «петля до правильного ввода», и в этом случае, где ваша петля? – Rom1

+0

обе сделано. как я сказал, что это новая территория для меня. – user10

ответ

1

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

userInput.matcher(blah); 

не

userInput.matcher("blah"); 

, потому что вы сопоставления строки, а не только "blah"

Теперь основная часть вашего вопроса. Первое, что вам нужно - это посмотреть на объект Matcher. В частности, посмотрите Matcher.find().

Во-вторых, вам нужно добавить какой-то условный цикл в свой код, чтобы он продолжал запрашивать ввод. Возможно, что-то вроде:

bool result = true; 
do { 
    String blah = sc.nextLine(); 
    Pattern userInput = Pattern.compile("^[a-zA-Z]+$"); 
    Matcher inputCheck = userInput.matcher("blah"); 
    result = //boolean check from your matcher object 
    if(result) { 
     //Complain about wrong input 
    } 
} while(result); 
+0

'bool result = true; do { String blah = sc.nextLine(); Образец userInput = Pattern.compile ("^ [a-zA-Z] + $"); Вход для контролера Check = userInput.matcher (blah); if (false) {System.out.println ("неправильный ввод"); } while (true); ' что-то вроде этого? – user10

2

Это похоже на домашнее задание, поэтому я не хочу отдать слишком много, но вы хотите посмотреть на if statement, а также на циклы while или for. Это будет условно выполнять код, если выполняются определенные критерии.

Смежные вопросы