входной шаблон соответствия java - PullRequest
0 голосов
/ 22 апреля 2011

Я хочу написать функцию validate(), которая примет некоторый шаблон или регулярное выражение в качестве аргумента и попросит пользователя ввести свой выбор. Если выбор соответствует шаблону, он вернет выбор, в противном случае он попросит пользователя повторно ввести выбор.

Например, если я вызову validate() с 123 в качестве аргумента, он вернет либо 1, либо 2, либо 3 в зависимости от ввода пользователя.

Но я не знаю, как используются шаблоны или регулярные выражения. Пожалуйста, помогите.

Я написал некоторый код, но я не уверен, что писать в нескольких местах. Я хочу, чтобы функция проверки, написанная ниже, принимала входные данные 1, 2 или 3 и возвращала их.

import java.io.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
class Pat
{
  public static void main(String args[])
  {
    int num=validate(Pattern.compile("123"));//I don't know whether this is right or not
    System.out.println(num);
  }
  static int validate(Pattern pattern)
  {
    int input;
    boolean validInput=false;
    do
    {
      try
      {
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
        input=Integer.parseInt(br.readLine());
        validInput=true;
      }catch(Exception e)
      {
        System.out.println(""+e);
      }
    }while(!validInput || input.matches(pattern));// This also seems like a problem.
    return input;
  }
}

Ответы [ 2 ]

2 голосов
/ 22 апреля 2011

Я думаю, что вы хотели ввести свой шаблон как "[123]".

Вы почти решили это сами, приятель.:)

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

import java.io.*;


class Pat
{
    public static void main(String args[])
    {
        int num = validate("[123]");
        System.out.println(num);
    }

    static int validate(String pattern)
    {
        String input = "";
        boolean validInput = false;
        do
        {
            try
            {
                BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
                input = br.readLine();
                if(input.matches(pattern))
                    validInput = true;
            }catch(Exception e)
            {
                System.out.println("" + e);
            }
        }while(!validInput);
        return Integer.parseInt(input);
    }
}

Ой, Боро.

0 голосов
/ 23 апреля 2011

Если вы не хотите использовать средство сопоставления с образцом, вы можете просто проверить, является ли ввод одним из символов в строке параметров.

public class Main {
public static void main(String[] args) {
    String options = "123abc";
    System.out.println("You chose option: " + validate(options));
}

static String validate(String options)
{
    boolean validInput=false;
    String input = "";
    do {
        System.out.println("Enter one of the following: " + options);
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
        try {
            input = br.readLine();
            if (input.length() == 1 && options.indexOf(input) >= 0) {
              validInput=true;
            }
        } catch (IOException ex) {
            // bad input
        }
    } while(!validInput);
    return input;
} }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...