限制用户输入+循环

时间:2012-05-15 15:16:11

标签: java java.util.scanner

我想做什么:

  • 将用户输入限制为仅限字母(小写和大写)
  • 输入错误时
  • 错误消息
  • 循环直到输入正确

有相似问题的网站提供了正则表达式,模式和匹配器。我看过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");
    }
}

这编译,但我不确定这是否是正确/最好的方法。但是,如果我输入不同的字符类型,它只执行剩下的代码。

如果收到正确的字符类型,我该如何才能执行它?我应该使用什么来使用户知道错误?

如果给出的代码有误,我该怎么做才能改变它?

2 个答案:

答案 0 :(得分:2)

这似乎是家庭作业,所以我不想放弃太多,但你想要查看if statement以及whilefor循环。如果满足某些条件,这将有条件地执行代码。

答案 1 :(得分: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);