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");
    }
}

这可以编译,但我不确定这是否是正确/最佳的方法。但是,如果我输入不同的字符类型,它只会执行其余的代码。

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

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

4

2 回答 2

2

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

于 2012-05-15T15:19:44.850 回答
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);
于 2012-05-15T15:26:03.187 回答